Slipp 발표 자료 20151212

65
평범한 서버 개발자최근 개발 트렌드소소한 이야기 정진수 2015.12.12 2015년을 보내면서 - SLiPP 스터디

Transcript of Slipp 발표 자료 20151212

Page 1: Slipp 발표 자료 20151212

평범한 서버 개발자의 최근 개발 트렌드와 소소한 이야기

정진수 2015.12.12

2015년을 보내면서 - SLiPP 스터디

Page 2: Slipp 발표 자료 20151212

그냥 개발자, 인프라웨어 (C, C++, Java, Object C, WinAPI 기타 등등)

모바일 웹 브라우저 엔진 개발 Prototyping(AR, 보안, Cloud Web Office) 기타 등등

서버 개발자, 카카오(Ruby on Rails, Java, Scala) 게임 플랫폼 개발(어드민, 게임하기, 각 종 이벤트, 기타 등등)

글로벌 게임 플랫폼 개발 중(Kameleon)

2013년 Slipp 1기부터 참여

불량한 출석률을 통해 스터디 그룹의 재정지원을 책임지고 있음

About me

Page 3: Slipp 발표 자료 20151212

카카오에서의 개발 경험..

서비스에 대한 자세, 멀티 플레이어, 수평 문화, 훌륭한 동료, 신뢰, 충돌, 헌신, 모바일 게임 혁명, 합병, 상장, 기타 등등..

Page 4: Slipp 발표 자료 20151212

Ruby on rails..빠른 개발 철학, 짧은 코드, 오픈 소스의 매우 적극적인 사용, Best practice, 기타 등등..and Fun & Sexy!!

Page 5: Slipp 발표 자료 20151212

어떤 기술 혹은 툴을 학습하고 사용해보는 지에 따라 달라지는 성장속도를 체감

Page 6: Slipp 발표 자료 20151212

그래서 열심히 글도 읽고 코딩도 따라 해보고..

Page 7: Slipp 발표 자료 20151212

그러다 보니까…

Page 8: Slipp 발표 자료 20151212

알아야 할게 너무 많아서…똑똑한 사람들이 너무 많아서..T.T

Page 9: Slipp 발표 자료 20151212

제 능력 따위로는 제대로 알고 나서 쓰려면 강산이 변할지도 모르겠다는 생각이 들었습니다…

Page 10: Slipp 발표 자료 20151212

어느정도 파악하고 나서 이거다 싶으면 바로 업무에 사용하면서 익힌다!

Page 11: Slipp 발표 자료 20151212

어느 정도는 어느 정도를 말하는 것인지?…

Page 12: Slipp 발표 자료 20151212

개개인마다 차이가 있고, 노하우가 있을 수 있습니다.

Page 13: Slipp 발표 자료 20151212

꾸준한 지식 습득과 연습을 통해 이러한 내용들에 대한 스스로의 기준을 잡아가는 것이 중요!

Page 14: Slipp 발표 자료 20151212

개인적으로는…

구글에서 검색했을 때 얼마나 많은 자료가 나오는지? 프로젝트의 메인페이지(Github 혹은 웹페이지)를 보고 이해가 되는지?

Stackoverflow에서의 관련 질문 횟수 만든 사람 혹은 조직은 누구인지?

Overview가 얼마나 간결하고 명확한지? 장점과 단점은 무엇인지?(최대한 잘 정리된 글을 찾음) Github 활성도는 어떠한지?(최근 커밋 날짜, 커미터 수)

레퍼런스는 무엇이 있는지? 내가 훌륭하다고 생각하는 개발자가 관심있게 보는 기술인지?

기타 등등

Page 15: Slipp 발표 자료 20151212

그리하여 Ruby on Rails로 행복하고 재미있게 서비스 개발을 계속 해나가던 차에..

Page 16: Slipp 발표 자료 20151212

새로운 플랫폼 개발 프로젝트의 시작

Page 17: Slipp 발표 자료 20151212

타겟은 중국!

Page 18: Slipp 발표 자료 20151212

왠지 개발 인프라 안좋을 것 같고… 왠지 네트워크 환경은 안좋을 것 같고… 왠지 사용자는 엄청나게 많을 것 같고…

분명히 말은 안통할 것 같고… 공기도 안좋을 것 같고…

Page 19: Slipp 발표 자료 20151212

그럼에도 불구하고 꿈 같은 중국 시장… 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

Page 20: Slipp 발표 자료 20151212

목표는!!개발사의 중국 진출 장벽을 줄여주자!

Page 21: Slipp 발표 자료 20151212

가상채널(Haishen)과 통합개발한 One Source로 Multi-channel 배포 바이너리 생성

게임 플랫폼 파편화에 필요한 개발사의 노력을 줄여주자!

인증, 결제, 소셜 등 글로벌 환경 대응에 필요한 통합개발기간을 98% 이상 단축!

Page 22: Slipp 발표 자료 20151212

생성된 배포 바이너리로 통합 테스트

게임 정보 및 채널별 개발정보 등록

개발/테스트가 용이한 가상채널(Haishen)로Kameleon SDK 및 API 통합 개발 진행

Builder를 통해 배포 바이너리 자동 생성

테스트 완료된 배포 바이너리를 제출하여 게임 출시

통합 테스트

Kameleon 개발자 등록

가상 채널로 SDK 통합 개발

채널별배포 바이너리 생성

출시

인증, 결제, 소셜 등 글로벌 환경 대응에 필요한 통합개발기간을 98% 이상 단축!

Page 23: Slipp 발표 자료 20151212
Page 24: Slipp 발표 자료 20151212

그후 1년 간..

Page 25: Slipp 발표 자료 20151212

32개 채널 빌드 생성 가능 및 게임 빌드의 각 채널별 심사 통과 1개 게임 6개 채널 출시 후 운영 중, 3개 게임 CBT 진행 예정

현재 상태!!

Page 26: Slipp 발표 자료 20151212

개발 초기로 돌아가보겠습니다.

Page 27: Slipp 발표 자료 20151212

무엇으로 만들까?

Page 28: Slipp 발표 자료 20151212

Ruby on Rails가 좋긴 한데…중국에는…

http://blog.jaredfriedman.com/2015/09/15/why-i-wouldnt-use-rails-for-a-new-company/

Page 29: Slipp 발표 자료 20151212

현재의 개발 트렌드도 학습할 수 있고 성능도 좋고 검증도 되었고 재미있는 언어?!

Page 30: Slipp 발표 자료 20151212
Page 31: Slipp 발표 자료 20151212

Functional Programming?!!

Page 32: Slipp 발표 자료 20151212

Functional Programming이란?프로그램을 오직 순수 함수(pure function)들로만 작성하는 것

순수함수(pure function)란?

부수효과(side effect)가 없는 함수들

부수효과(side effect)란?

변수를 수정한다

자료구조를 해당 위치에서 수정한다.

객체의 필드를 설정한다.

콘솔에 출력하거나 사용자의 입력을 읽어들인다.

파일에 기록하거나 파일에서 읽어들인다.

화면에 그린다.

스칼라로 배우는 함수형 프로그래밍 폴 키우사노, 루나드 비아르드나손

Page 33: Slipp 발표 자료 20151212

도대체 부수효과가 없는 함수로 프로그래밍을 하면 무슨 장점이 있지??

모듈화시키기 쉽기 때문에 테스트(test), 재사용(reuse), 병렬 처리(paralellism), 제너릭(generic), 분석(analysis)에 유용하다.

Page 34: Slipp 발표 자료 20151212

Concurrent?? Parallel??

Page 35: Slipp 발표 자료 20151212
Page 36: Slipp 발표 자료 20151212

의심할 여지없이, 만약 메모리의 어떤 위치에 맨 처음 한번만 값을 할당하고 프로그램이 실행되는 동안 이 값을 변경하지 않는다면, 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

Page 37: Slipp 발표 자료 20151212

아..CPU의 발전속도에 힘입어 프로그래밍 언어의 패러다임도 바뀌어 가는구나..

Page 38: Slipp 발표 자료 20151212

“나는 기대했던 것처럼 함수형 프로그래밍을 공부하면서 동시성과 관련된 문제에 접근하기 위한 새로운 방법을 알게 되었다. 그뿐만 아니라 다양한 타입

이나 함수를 설계할 때 전에는 미처 몰랐던 선명한 개념도 익힐 수 있었다. 전보다 더 간결한 코드를 작성하게 된 것이다.

함수형 프로그래밍은 모듈의 경계를 어디쯤으로 정해야 하는 지, 모듈의 재사용성을 어떻게 향상시킬 수 있는지 등에 대해서 전과 다른 각도에서 사고하

게 만들어주었다. 함수형 프로그래밍의 커뮤니티가 혁신적이고 강력한 타입시스템을 구축함으로써 프로그램 일반의 정확성을 향상시키고 있다는 사실

도 깨닫게 되었다.

이러한 과정을 통해서 엄청난 분량의 데이터를 다루고, 빠르게 변하는 요구사항에 대응하고, 급박한 일정 속

에서 일해야 하는 현대 프로그래밍 고유의 문제들을 해결하는데 있어서 함수형 프로그래밍이 매우 유

용하다는 결론을 내리게 되었다”

Functional Programming for Java Developers(폴리글랏 프로그래밍, 임백준에서 발췌)

Page 39: Slipp 발표 자료 20151212

느낌적인 느낌으로 다양한 언어들이

Funcational Programming의 다양한 개념을 받아들여 현재의 다양한 문제를 풀어보고자 하는 구나..

Page 40: Slipp 발표 자료 20151212

저희 팀은 스칼라를 선택했습니다.

Page 41: Slipp 발표 자료 20151212

이유..함수형 프로그래밍을 공부해보고 싶다.

아무래도 자바는 못쓰겠다..그러나 중국 환경의 불확실성을 고려할 때 JVM의 검증된 성능은 가져가야 겠다.

트위터 및 다양한 오픈소스에서 검증된 언어

활발한 개발 상황 및 커뮤니티

진입장벽이 낮다.(바로 개발을 시작할 수 있어야 한다.)

도전적인 언어라서?!

폴리글랏 프로그래밍 책이 너무 설득력있어서…

Page 42: Slipp 발표 자료 20151212

후기..스칼라스러움을 찾아가는 긴 여정

컴파일 타임이 너무 길다.

프레임워크 및 라이브러리의 안정화에 대한 이슈

양날의 검.

코드 만족도가 높음

Page 43: Slipp 발표 자료 20151212

이후 세션들을 통해 Go, Scala, Clojure 언어들도 비교 분석 해보시기 바랍니다^^

Page 44: Slipp 발표 자료 20151212

자..그러면 어떤 구조로 만들지?

Page 45: Slipp 발표 자료 20151212

쿠키런 1년, 서버 개발 분투기 데브시스터즈 홍성진

NDC14 http://www.slideshare.net/serialxnet/1-35304689

Page 46: Slipp 발표 자료 20151212

기능 개발 후 빠르게 배포할 수 있고.. 필요한 자원을 줄일 수 있고..

트래픽이 몰리면 빠르게 확장할 수 있고.. 문제가 생겨도

전체 서비스가 죽지 않고..빠르게 롤백 및 원상복구할 수 있고…

Page 47: Slipp 발표 자료 20151212

음..먼가 좀 더 현대적이고 간지나게 정리된 서비스의 요구사항은 없을까?

Page 48: Slipp 발표 자료 20151212

Reactive System?!

Page 49: Slipp 발표 자료 20151212

ReactiveManifesto.org

시스템에 대한 요구사항의 변화과거 현재

서버 자원 수십대 수천대

응답 시간 초단위 밀리세컨드단위

운영 수시간의 오프라인 점검 100% Uptime

데이터 Gigabyte Petabyte

Page 50: Slipp 발표 자료 20151212

좀 더 실무적으로는 어떻게 적용할 수 있는걸까?

Page 51: Slipp 발표 자료 20151212

Micro Service Architecture?!!

Page 52: Slipp 발표 자료 20151212

깊은 고민..

Page 53: Slipp 발표 자료 20151212

도…도전!!!

Page 54: Slipp 발표 자료 20151212

이유?주 개발 언어로 스칼라를 선택한 상황에서 새로운 팀원 합류 시에 빠르게 개발에 투입될 수 있도록 하기 위해

서비스 확장 속도를 예측할 수 없는 상태에서 최대한 유연한 구조를 위해

단점을 해결하기 위한 DevOps의 경험은 매우 값질 것으로 예상된다.

자신감 충만..T.T

Page 55: Slipp 발표 자료 20151212

후기…

DevOps, DevOps, DevOps…

Communication, Communication, Communication…

Page 56: Slipp 발표 자료 20151212

반성

Page 57: Slipp 발표 자료 20151212

좀 더 자세한 내용과 실제 사례에 대해서는 이후의 Micro Service Architecture 세션에서

속시원히 이야기됩니다^^

Page 58: Slipp 발표 자료 20151212

2015년…

Page 59: Slipp 발표 자료 20151212

희망사항…

만들어야 할 것이 가슴 뛰게 만들고..

만드는 과정이 즐겁고..

만들고 나면 뿌듯한..

이를 통한 빠른 성장

투자(시간) 대비 보상(경험, 명성, 인맥, 돈, 기회, 기타 등등)을 얻을 수 있는..

Page 60: Slipp 발표 자료 20151212

올 한해 함께 한 다양한 Keywords들..

Page 61: Slipp 발표 자료 20151212

사람들이 만들어내는 것(다양한 소프트웨어 및 오픈 소스, 블로그 등)을 살

펴보면 사람들이 풀고 싶어하는 문제들은 어떤 것인지, 앞으로의 방향은

어떤 곳으로 향하는 지 알 수 있다.

Page 62: Slipp 발표 자료 20151212

Variable Problem & Proper Process, Architecture, Tools

Page 63: Slipp 발표 자료 20151212

여러분의 한해는 어떠셨나요?

Page 64: Slipp 발표 자료 20151212
Page 65: Slipp 발표 자료 20151212

Slipp 세미나에서 좋은 정보 얻어가시고 얼마 남지 않은 2015년 잘 정리하시기 바랍니다!

감사합니다.