slipp 발표 자료 20151212

Post on 12-Jan-2017

5.612 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

정진수 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년 잘 정리하시기 바랍니다!

감사합니다.

top related