SlideShare a Scribd company logo
1 of 65
Download to read offline
평범한 서버 개발자의 최근 개발 트렌드와 소소한 이야기
정진수
2015.12.12
2015년을 보내면서 - SLiPP 스터디
그냥 개발자, 인프라웨어 (C, C++, Java, Object C, WinAPI 기타 등등)
모바일 웹 브라우저 엔진 개발
Prototyping(AR, 보안, Cloud Web Office)
기타 등등
서버 개발자, 카카오(Ruby on Rails, Java, Scala)
게임 플랫폼 개발(어드민, 게임하기, 각 종 이벤트, 기타 등등)
글로벌 게임 플랫폼 개발 중(Kameleon)
2013년 Slipp 1기부터 참여
불량한 출석률을 통해 스터디 그룹의 재정지원을 책임지고 있음
About me
카카오에서의 개발 경험..
서비스에 대한 자세, 멀티 플레이어, 수평 문화, 훌륭한 동료,
신뢰, 충돌, 헌신, 모바일 게임 혁명, 합병, 상장, 기타 등등..
Ruby on rails..
빠른 개발 철학, 짧은 코드, 오픈 소스의 매우 적극적인 사용, Best practice, 기타 등등..and Fun & Sexy!!
어떤 기술 혹은 툴을 학습하고 사용해보는 지에 따라
달라지는 성장속도를 체감
그래서 열심히 글도 읽고 코딩도 따라 해보고..
그러다 보니까…
알아야 할게 너무 많아서…똑똑한 사람들이 너무 많아서..T.T
제 능력 따위로는 제대로 알고 나서 쓰려면
강산이 변할지도 모르겠다는 생각이 들었습니다…
어느정도 파악하고 나서 이거다 싶으면 바로 업무에
사용하면서 익힌다!
어느 정도는 어느 정도를 말하는 것인지?…
개개인마다 차이가 있고, 노하우가 있을 수 있습니다.
꾸준한 지식 습득과 연습을 통해
이러한 내용들에 대한 스스로의 기준을 잡아가는 것이 중요!
개인적으로는…
구글에서 검색했을 때 얼마나 많은 자료가 나오는지?
프로젝트의 메인페이지(Github 혹은 웹페이지)를 보고 이해가 되는지?
Stackoverflow에서의 관련 질문 횟수
만든 사람 혹은 조직은 누구인지?
Overview가 얼마나 간결하고 명확한지?
장점과 단점은 무엇인지?(최대한 잘 정리된 글을 찾음)
Github 활성도는 어떠한지?(최근 커밋 날짜, 커미터 수)
레퍼런스는 무엇이 있는지?
내가 훌륭하다고 생각하는 개발자가 관심있게 보는 기술인지?
기타 등등
그리하여 Ruby on Rails로 행복하고 재미있게
서비스 개발을 계속 해나가던 차에..
새로운 플랫폼 개발 프로젝트의 시작
타겟은 중국!
왠지 개발 인프라 안좋을 것 같고…
왠지 네트워크 환경은 안좋을 것 같고…
왠지 사용자는 엄청나게 많을 것 같고…
분명히 말은 안통할 것 같고…
공기도 안좋을 것 같고…
그럼에도 불구하고 꿈 같은 중국 시장…
2014년 모바일 게임 매출 약 275억 위안(4조 9775억원)
한국 게임의 진출이 어려운 환경(게임 플랫폼 파편화,열악한 네트워크 환경, 언어와 문화차이..등)
http://www.globalwindow.org/gw/overmarket/GWOMAL020M.html?
BBS_ID=10&MENU_CD=M10103&UPPER_MENU_CD=M10102&MENU_STEP=3&ARTICLE_ID=5031278&ARTICLE_SE=20305
목표는!!
개발사의 중국 진출 장벽을 줄여주자!
가상채널(Haishen)과 통합개발한 One Source로 Multi-channel 배포 바이너리 생성
게임 플랫폼 파편화에 필요한 개발사의 노력을 줄여주자!
인증, 결제, 소셜 등 글로벌 환경 대응에 필요한 통합개발기간을 98% 이상 단축!
생성된 배포 바이너리로
통합 테스트
게임 정보 및
채널별 개발정보 등록
개발/테스트가 용이한 가상채널(Haishen)로

Kameleon SDK 및 API 통합 개발 진행
Builder를 통해
배포 바이너리 자동 생성
테스트 완료된 배포 바이너리를
제출하여 게임 출시
통합
테스트
Kameleon
개발자 등록
가상 채널로
SDK 통합 개발
채널별

배포 바이너리
생성
출시
인증, 결제, 소셜 등 글로벌 환경 대응에 필요한 통합개발기간을 98% 이상 단축!
그후 1년 간..
32개 채널 빌드 생성 가능 및 게임 빌드의 각 채널별 심사 통과
1개 게임 6개 채널 출시 후 운영 중, 3개 게임 CBT 진행 예정
현재 상태!!
개발 초기로 돌아가보겠습니다.
무엇으로 만들까?
Ruby on Rails가 좋긴 한데…중국에는…
http://blog.jaredfriedman.com/2015/09/15/why-i-wouldnt-use-rails-for-a-new-company/
현재의 개발 트렌드도 학습할 수 있고
성능도 좋고
검증도 되었고
재미있는 언어?!
Functional Programming?!!
Functional Programming이란?
프로그램을 오직 순수 함수(pure function)들로만 작성하는 것
순수함수(pure function)란?
부수효과(side effect)가 없는 함수들
부수효과(side effect)란?
변수를 수정한다
자료구조를 해당 위치에서 수정한다.
객체의 필드를 설정한다.
콘솔에 출력하거나 사용자의 입력을 읽어들인다.
파일에 기록하거나 파일에서 읽어들인다.
화면에 그린다.
스칼라로 배우는 함수형 프로그래밍
폴 키우사노, 루나드 비아르드나손
도대체 부수효과가 없는 함수로 프로그래밍을 하면 무슨 장점이 있지??
모듈화시키기 쉽기 때문에 테스트(test), 재사용(reuse), 병렬 처리(paralellism),
제너릭(generic), 분석(analysis)에 유용하다.
Concurrent?? Parallel??
의심할 여지없이, 만약 메모리의 어떤 위치에 맨 처음 한번만 값을 할당하고 프로그램이 실행되는 동안 이 값을 변경하지 않
는다면, 131072개의 프로세서들이 서로 먼저 이 메모리 값을 사용하려고 한다 할지라도 우리는 더이상 신경쓸 필요가
없다.
이전에는 두 개 이상의 프로세스가 동시에 하나의 메모리 값을 변경하는 경우를 방지하기 위해서 세마포어(semaphores)라는 기술을 사용해야만 했지
만, 이제는 그럴 필요가 없다. 왜냐하면, 이제는 더 이상 메모리 값이 변경되는 일이 발생하지 않기 때문이다.
그래서 이것이 함수형 프로그래밍 언어가 가지고 있는 장점들 중에 하나이고, 가장 큰 장점이라고 볼 수 있다. 지금 우리 프로그래머들에게 빠
른 속도로 다가오는 있는 기술들 중에 하나가 다중 코어(multi-core)이다.
더 늦기 전에 다중 코어에 대한 준비를 해 두는 것이 좋을것이다.
http://kwangshin.pe.kr/blog/2013/01/21/
Functional Programming Basic, Robert C.Martin
https://pragprog.com/magazines/2013-01/functional-programming-basics
아..CPU의 발전속도에 힘입어
프로그래밍 언어의 패러다임도 바뀌어 가는구나..
“나는 기대했던 것처럼 함수형 프로그래밍을 공부하면서 동시성과 관련된 문제에 접근하기 위한 새로운 방법을 알게 되었다. 그뿐만 아니라 다양한 타입
이나 함수를 설계할 때 전에는 미처 몰랐던 선명한 개념도 익힐 수 있었다. 전보다 더 간결한 코드를 작성하게 된 것이다.
함수형 프로그래밍은 모듈의 경계를 어디쯤으로 정해야 하는 지, 모듈의 재사용성을 어떻게 향상시킬 수 있는지 등에 대해서 전과 다른 각도에서 사고하
게 만들어주었다. 함수형 프로그래밍의 커뮤니티가 혁신적이고 강력한 타입시스템을 구축함으로써 프로그램 일반의 정확성을 향상시키고 있다는 사실
도 깨닫게 되었다.
이러한 과정을 통해서 엄청난 분량의 데이터를 다루고, 빠르게 변하는 요구사항에 대응하고, 급박한 일정 속
에서 일해야 하는 현대 프로그래밍 고유의 문제들을 해결하는데 있어서 함수형 프로그래밍이 매우 유
용하다는 결론을 내리게 되었다”
Functional Programming for Java Developers(폴리글랏 프로그래밍, 임백준에서 발췌)
느낌적인 느낌으로
다양한 언어들이
Funcational Programming의 다양한 개념을 받아들여
현재의 다양한 문제를
풀어보고자 하는 구나..
저희 팀은 스칼라를 선택했습니다.
이유..
함수형 프로그래밍을 공부해보고 싶다.
아무래도 자바는 못쓰겠다..그러나 중국 환경의 불확실성을 고려할 때 JVM의 검증된 성능은
가져가야 겠다.
트위터 및 다양한 오픈소스에서 검증된 언어
활발한 개발 상황 및 커뮤니티
진입장벽이 낮다.(바로 개발을 시작할 수 있어야 한다.)
도전적인 언어라서?!
폴리글랏 프로그래밍 책이 너무 설득력있어서…
후기..
스칼라스러움을 찾아가는 긴 여정
컴파일 타임이 너무 길다.
프레임워크 및 라이브러리의 안정화에 대한 이슈
양날의 검.
코드 만족도가 높음
이후 세션들을 통해 Go, Scala, Clojure 언어들도
비교 분석 해보시기 바랍니다^^
자..그러면 어떤 구조로 만들지?
쿠키런 1년, 서버 개발 분투기
데브시스터즈 홍성진
NDC14
http://www.slideshare.net/serialxnet/1-35304689
기능 개발 후 빠르게 배포할 수 있고..
필요한 자원을 줄일 수 있고..
트래픽이 몰리면 빠르게 확장할 수 있고..
문제가 생겨도
전체 서비스가 죽지 않고..빠르게 롤백 및 원상복구할 수 있고…
음..먼가 좀 더 현대적이고 간지나게 정리된
서비스의 요구사항은 없을까?
Reactive System?!
ReactiveManifesto.org
시스템에 대한 요구사항의 변화
과거 현재
서버 자원 수십대 수천대
응답 시간 초단위 밀리세컨드단위
운영 수시간의 오프라인 점검 100% Uptime
데이터 Gigabyte Petabyte
좀 더 실무적으로는 어떻게 적용할 수 있는걸까?
Micro Service Architecture?!!
깊은 고민..
도…도전!!!
이유?
주 개발 언어로 스칼라를 선택한 상황에서 새로운 팀원 합류 시에 빠르
게 개발에 투입될 수 있도록 하기 위해
서비스 확장 속도를 예측할 수 없는 상태에서 최대한 유연한 구조를 위해
단점을 해결하기 위한 DevOps의 경험은 매우 값질 것으로 예상된다.
자신감 충만..T.T
후기…
DevOps, DevOps, DevOps…
Communication, Communication, Communication…
반성
좀 더 자세한 내용과 실제 사례에 대해서는
이후의 Micro Service Architecture 세션에서
속시원히 이야기됩니다^^
2015년…
희망사항…
만들어야 할 것이 가슴 뛰게 만들고..
만드는 과정이 즐겁고..
만들고 나면 뿌듯한..
이를 통한 빠른 성장
투자(시간) 대비 보상(경험, 명성, 인맥, 돈, 기회, 기타 등등)을 얻을 수 있는..
올 한해 함께 한 다양한 Keywords들..
사람들이 만들어내는 것(다양한 소프트웨어 및 오픈 소스, 블로그 등)을 살
펴보면 사람들이 풀고 싶어하는 문제들은 어떤 것인지, 앞으로의 방향은
어떤 곳으로 향하는 지 알 수 있다.
Variable Problem &
Proper Process, Architecture, Tools
여러분의 한해는 어떠셨나요?
Slipp 세미나에서 좋은 정보 얻어가시고
얼마 남지 않은 2015년 잘 정리하시기 바랍니다!
감사합니다.

More Related Content

What's hot

Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)
Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)
Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)confluent
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing Inho Kang
 
Redis - Usability and Use Cases
Redis - Usability and Use CasesRedis - Usability and Use Cases
Redis - Usability and Use CasesFabrizio Farinacci
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향Young-Ho Cho
 
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...confluent
 
There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...
There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...
There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...thegdb
 
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기Kee Hoon Lee
 
Redis at Lyft: 2,000 Instances and Beyond
Redis at Lyft: 2,000 Instances and BeyondRedis at Lyft: 2,000 Instances and Beyond
Redis at Lyft: 2,000 Instances and BeyondDaniel Hochman
 
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingFrom ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingEmanuele DelBono
 
Managing PostgreSQL with Ansible
 Managing PostgreSQL with Ansible Managing PostgreSQL with Ansible
Managing PostgreSQL with AnsibleEDB
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]Yurim Jin
 
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드도형 임
 
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"용근 권
 
Document Presentment by OpenText
Document Presentment by OpenTextDocument Presentment by OpenText
Document Presentment by OpenTextJonathan Beardsley
 
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자Yurim Jin
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better EngineerDaeMyung Kang
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님NAVER D2
 
Data.Monks sGTM is a universal endpoint.pptx
Data.Monks sGTM is a universal endpoint.pptxData.Monks sGTM is a universal endpoint.pptx
Data.Monks sGTM is a universal endpoint.pptxDoug Hall
 

What's hot (20)

Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)
Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)
Dissolving the Problem (Making an ACID-Compliant Database Out of Apache Kafka®)
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing
 
Redis - Usability and Use Cases
Redis - Usability and Use CasesRedis - Usability and Use Cases
Redis - Usability and Use Cases
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
 
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
 
There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...
There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...
There's a Monster in My Closet: Architecture of a MongoDB-powered Event Proce...
 
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
 
Redis at Lyft: 2,000 Instances and Beyond
Redis at Lyft: 2,000 Instances and BeyondRedis at Lyft: 2,000 Instances and Beyond
Redis at Lyft: 2,000 Instances and Beyond
 
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingFrom ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
 
Managing PostgreSQL with Ansible
 Managing PostgreSQL with Ansible Managing PostgreSQL with Ansible
Managing PostgreSQL with Ansible
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]
 
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
 
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
 
Document Presentment by OpenText
Document Presentment by OpenTextDocument Presentment by OpenText
Document Presentment by OpenText
 
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
 
Data.Monks sGTM is a universal endpoint.pptx
Data.Monks sGTM is a universal endpoint.pptxData.Monks sGTM is a universal endpoint.pptx
Data.Monks sGTM is a universal endpoint.pptx
 

Viewers also liked

Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212완수 양
 
Scala로의 산책
Scala로의 산책Scala로의 산책
Scala로의 산책Youmi Bae
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSADaekwon Kang
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA경원 이
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Javajigi Jaesung
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetectJunyi Song
 

Viewers also liked (7)

Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212
 
Scala로의 산책
Scala로의 산책Scala로의 산책
Scala로의 산책
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSA
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect
 
Slipp 발표 - GO
Slipp 발표 - GOSlipp 발표 - GO
Slipp 발표 - GO
 

Similar to Slipp 발표 자료 20151212

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it goChris Ohk
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화Terry Cho
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjsJae Sung Park
 
실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기IMQA
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144Darion Kim
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기Soojin Ro
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427Will Kim
 
자바개발자를 위한 Flex와 Air이야기 관중
자바개발자를 위한 Flex와 Air이야기 관중자바개발자를 위한 Flex와 Air이야기 관중
자바개발자를 위한 Flex와 Air이야기 관중lovedev
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER Engineering
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규ChangKyu Song
 
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기복연 이
 
JavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotJavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotCirculus
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
 
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스시은 김
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기sung yong jung
 

Similar to Slipp 발표 자료 20151212 (20)

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
 
실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427
 
자바개발자를 위한 Flex와 Air이야기 관중
자바개발자를 위한 Flex와 Air이야기 관중자바개발자를 위한 Flex와 Air이야기 관중
자바개발자를 위한 Flex와 Air이야기 관중
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
 
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
 
JavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotJavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and Robot
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기
 

Slipp 발표 자료 20151212

  • 1. 평범한 서버 개발자의 최근 개발 트렌드와 소소한 이야기 정진수 2015.12.12 2015년을 보내면서 - SLiPP 스터디
  • 2. 그냥 개발자, 인프라웨어 (C, C++, Java, Object C, WinAPI 기타 등등) 모바일 웹 브라우저 엔진 개발 Prototyping(AR, 보안, Cloud Web Office) 기타 등등 서버 개발자, 카카오(Ruby on Rails, Java, Scala) 게임 플랫폼 개발(어드민, 게임하기, 각 종 이벤트, 기타 등등) 글로벌 게임 플랫폼 개발 중(Kameleon) 2013년 Slipp 1기부터 참여 불량한 출석률을 통해 스터디 그룹의 재정지원을 책임지고 있음 About me
  • 3. 카카오에서의 개발 경험.. 서비스에 대한 자세, 멀티 플레이어, 수평 문화, 훌륭한 동료, 신뢰, 충돌, 헌신, 모바일 게임 혁명, 합병, 상장, 기타 등등..
  • 4. Ruby on rails.. 빠른 개발 철학, 짧은 코드, 오픈 소스의 매우 적극적인 사용, Best practice, 기타 등등..and Fun & Sexy!!
  • 5. 어떤 기술 혹은 툴을 학습하고 사용해보는 지에 따라 달라지는 성장속도를 체감
  • 6. 그래서 열심히 글도 읽고 코딩도 따라 해보고..
  • 8. 알아야 할게 너무 많아서…똑똑한 사람들이 너무 많아서..T.T
  • 9. 제 능력 따위로는 제대로 알고 나서 쓰려면 강산이 변할지도 모르겠다는 생각이 들었습니다…
  • 10. 어느정도 파악하고 나서 이거다 싶으면 바로 업무에 사용하면서 익힌다!
  • 11. 어느 정도는 어느 정도를 말하는 것인지?…
  • 12. 개개인마다 차이가 있고, 노하우가 있을 수 있습니다.
  • 13. 꾸준한 지식 습득과 연습을 통해 이러한 내용들에 대한 스스로의 기준을 잡아가는 것이 중요!
  • 14. 개인적으로는… 구글에서 검색했을 때 얼마나 많은 자료가 나오는지? 프로젝트의 메인페이지(Github 혹은 웹페이지)를 보고 이해가 되는지? Stackoverflow에서의 관련 질문 횟수 만든 사람 혹은 조직은 누구인지? Overview가 얼마나 간결하고 명확한지? 장점과 단점은 무엇인지?(최대한 잘 정리된 글을 찾음) Github 활성도는 어떠한지?(최근 커밋 날짜, 커미터 수) 레퍼런스는 무엇이 있는지? 내가 훌륭하다고 생각하는 개발자가 관심있게 보는 기술인지? 기타 등등
  • 15. 그리하여 Ruby on Rails로 행복하고 재미있게 서비스 개발을 계속 해나가던 차에..
  • 16. 새로운 플랫폼 개발 프로젝트의 시작
  • 18. 왠지 개발 인프라 안좋을 것 같고… 왠지 네트워크 환경은 안좋을 것 같고… 왠지 사용자는 엄청나게 많을 것 같고… 분명히 말은 안통할 것 같고… 공기도 안좋을 것 같고…
  • 19. 그럼에도 불구하고 꿈 같은 중국 시장… 2014년 모바일 게임 매출 약 275억 위안(4조 9775억원) 한국 게임의 진출이 어려운 환경(게임 플랫폼 파편화,열악한 네트워크 환경, 언어와 문화차이..등) http://www.globalwindow.org/gw/overmarket/GWOMAL020M.html? BBS_ID=10&MENU_CD=M10103&UPPER_MENU_CD=M10102&MENU_STEP=3&ARTICLE_ID=5031278&ARTICLE_SE=20305
  • 20. 목표는!! 개발사의 중국 진출 장벽을 줄여주자!
  • 21. 가상채널(Haishen)과 통합개발한 One Source로 Multi-channel 배포 바이너리 생성 게임 플랫폼 파편화에 필요한 개발사의 노력을 줄여주자! 인증, 결제, 소셜 등 글로벌 환경 대응에 필요한 통합개발기간을 98% 이상 단축!
  • 22. 생성된 배포 바이너리로 통합 테스트 게임 정보 및 채널별 개발정보 등록 개발/테스트가 용이한 가상채널(Haishen)로
 Kameleon SDK 및 API 통합 개발 진행 Builder를 통해 배포 바이너리 자동 생성 테스트 완료된 배포 바이너리를 제출하여 게임 출시 통합 테스트 Kameleon 개발자 등록 가상 채널로 SDK 통합 개발 채널별
 배포 바이너리 생성 출시 인증, 결제, 소셜 등 글로벌 환경 대응에 필요한 통합개발기간을 98% 이상 단축!
  • 23.
  • 25. 32개 채널 빌드 생성 가능 및 게임 빌드의 각 채널별 심사 통과 1개 게임 6개 채널 출시 후 운영 중, 3개 게임 CBT 진행 예정 현재 상태!!
  • 28. Ruby on Rails가 좋긴 한데…중국에는… http://blog.jaredfriedman.com/2015/09/15/why-i-wouldnt-use-rails-for-a-new-company/
  • 29. 현재의 개발 트렌드도 학습할 수 있고 성능도 좋고 검증도 되었고 재미있는 언어?!
  • 30.
  • 32. Functional Programming이란? 프로그램을 오직 순수 함수(pure function)들로만 작성하는 것 순수함수(pure function)란? 부수효과(side effect)가 없는 함수들 부수효과(side effect)란? 변수를 수정한다 자료구조를 해당 위치에서 수정한다. 객체의 필드를 설정한다. 콘솔에 출력하거나 사용자의 입력을 읽어들인다. 파일에 기록하거나 파일에서 읽어들인다. 화면에 그린다. 스칼라로 배우는 함수형 프로그래밍 폴 키우사노, 루나드 비아르드나손
  • 33. 도대체 부수효과가 없는 함수로 프로그래밍을 하면 무슨 장점이 있지?? 모듈화시키기 쉽기 때문에 테스트(test), 재사용(reuse), 병렬 처리(paralellism), 제너릭(generic), 분석(analysis)에 유용하다.
  • 35.
  • 36. 의심할 여지없이, 만약 메모리의 어떤 위치에 맨 처음 한번만 값을 할당하고 프로그램이 실행되는 동안 이 값을 변경하지 않 는다면, 131072개의 프로세서들이 서로 먼저 이 메모리 값을 사용하려고 한다 할지라도 우리는 더이상 신경쓸 필요가 없다. 이전에는 두 개 이상의 프로세스가 동시에 하나의 메모리 값을 변경하는 경우를 방지하기 위해서 세마포어(semaphores)라는 기술을 사용해야만 했지 만, 이제는 그럴 필요가 없다. 왜냐하면, 이제는 더 이상 메모리 값이 변경되는 일이 발생하지 않기 때문이다. 그래서 이것이 함수형 프로그래밍 언어가 가지고 있는 장점들 중에 하나이고, 가장 큰 장점이라고 볼 수 있다. 지금 우리 프로그래머들에게 빠 른 속도로 다가오는 있는 기술들 중에 하나가 다중 코어(multi-core)이다. 더 늦기 전에 다중 코어에 대한 준비를 해 두는 것이 좋을것이다. http://kwangshin.pe.kr/blog/2013/01/21/ Functional Programming Basic, Robert C.Martin https://pragprog.com/magazines/2013-01/functional-programming-basics
  • 37. 아..CPU의 발전속도에 힘입어 프로그래밍 언어의 패러다임도 바뀌어 가는구나..
  • 38. “나는 기대했던 것처럼 함수형 프로그래밍을 공부하면서 동시성과 관련된 문제에 접근하기 위한 새로운 방법을 알게 되었다. 그뿐만 아니라 다양한 타입 이나 함수를 설계할 때 전에는 미처 몰랐던 선명한 개념도 익힐 수 있었다. 전보다 더 간결한 코드를 작성하게 된 것이다. 함수형 프로그래밍은 모듈의 경계를 어디쯤으로 정해야 하는 지, 모듈의 재사용성을 어떻게 향상시킬 수 있는지 등에 대해서 전과 다른 각도에서 사고하 게 만들어주었다. 함수형 프로그래밍의 커뮤니티가 혁신적이고 강력한 타입시스템을 구축함으로써 프로그램 일반의 정확성을 향상시키고 있다는 사실 도 깨닫게 되었다. 이러한 과정을 통해서 엄청난 분량의 데이터를 다루고, 빠르게 변하는 요구사항에 대응하고, 급박한 일정 속 에서 일해야 하는 현대 프로그래밍 고유의 문제들을 해결하는데 있어서 함수형 프로그래밍이 매우 유 용하다는 결론을 내리게 되었다” Functional Programming for Java Developers(폴리글랏 프로그래밍, 임백준에서 발췌)
  • 39. 느낌적인 느낌으로 다양한 언어들이 Funcational Programming의 다양한 개념을 받아들여 현재의 다양한 문제를 풀어보고자 하는 구나..
  • 40. 저희 팀은 스칼라를 선택했습니다.
  • 41. 이유.. 함수형 프로그래밍을 공부해보고 싶다. 아무래도 자바는 못쓰겠다..그러나 중국 환경의 불확실성을 고려할 때 JVM의 검증된 성능은 가져가야 겠다. 트위터 및 다양한 오픈소스에서 검증된 언어 활발한 개발 상황 및 커뮤니티 진입장벽이 낮다.(바로 개발을 시작할 수 있어야 한다.) 도전적인 언어라서?! 폴리글랏 프로그래밍 책이 너무 설득력있어서…
  • 42. 후기.. 스칼라스러움을 찾아가는 긴 여정 컴파일 타임이 너무 길다. 프레임워크 및 라이브러리의 안정화에 대한 이슈 양날의 검. 코드 만족도가 높음
  • 43. 이후 세션들을 통해 Go, Scala, Clojure 언어들도 비교 분석 해보시기 바랍니다^^
  • 45. 쿠키런 1년, 서버 개발 분투기 데브시스터즈 홍성진 NDC14 http://www.slideshare.net/serialxnet/1-35304689
  • 46. 기능 개발 후 빠르게 배포할 수 있고.. 필요한 자원을 줄일 수 있고.. 트래픽이 몰리면 빠르게 확장할 수 있고.. 문제가 생겨도 전체 서비스가 죽지 않고..빠르게 롤백 및 원상복구할 수 있고…
  • 47. 음..먼가 좀 더 현대적이고 간지나게 정리된 서비스의 요구사항은 없을까?
  • 49. ReactiveManifesto.org 시스템에 대한 요구사항의 변화 과거 현재 서버 자원 수십대 수천대 응답 시간 초단위 밀리세컨드단위 운영 수시간의 오프라인 점검 100% Uptime 데이터 Gigabyte Petabyte
  • 50. 좀 더 실무적으로는 어떻게 적용할 수 있는걸까?
  • 54. 이유? 주 개발 언어로 스칼라를 선택한 상황에서 새로운 팀원 합류 시에 빠르 게 개발에 투입될 수 있도록 하기 위해 서비스 확장 속도를 예측할 수 없는 상태에서 최대한 유연한 구조를 위해 단점을 해결하기 위한 DevOps의 경험은 매우 값질 것으로 예상된다. 자신감 충만..T.T
  • 55. 후기… DevOps, DevOps, DevOps… Communication, Communication, Communication…
  • 57. 좀 더 자세한 내용과 실제 사례에 대해서는 이후의 Micro Service Architecture 세션에서 속시원히 이야기됩니다^^
  • 59. 희망사항… 만들어야 할 것이 가슴 뛰게 만들고.. 만드는 과정이 즐겁고.. 만들고 나면 뿌듯한.. 이를 통한 빠른 성장 투자(시간) 대비 보상(경험, 명성, 인맥, 돈, 기회, 기타 등등)을 얻을 수 있는..
  • 60. 올 한해 함께 한 다양한 Keywords들..
  • 61. 사람들이 만들어내는 것(다양한 소프트웨어 및 오픈 소스, 블로그 등)을 살 펴보면 사람들이 풀고 싶어하는 문제들은 어떤 것인지, 앞으로의 방향은 어떤 곳으로 향하는 지 알 수 있다.
  • 62. Variable Problem & Proper Process, Architecture, Tools
  • 64.
  • 65. Slipp 세미나에서 좋은 정보 얻어가시고 얼마 남지 않은 2015년 잘 정리하시기 바랍니다! 감사합니다.