ݺߣ

ݺߣShare a Scribd company logo
NRISE 개발 스택
김문수
1. 상황
현재 상황
• 2011년 창업 하였습니다.
• 주로 스마트폰 기반의 앱/서비스를 개발하고 있습니다.
• 1명의 개발자로 시작하여 지금까지 3명의 개발자가 있습니다.
• 해야 할 일은 많지만 3명의 개발자로 소화하고 있습니다.
• 급하게 개발자를 채용하고 싶은 생각은 없습니다.
원칙
• 성공적인 소규모 스타트업을 끊임없이 벤치마킹 합니다.
• Keep it very simple.
• Don’t re-invent the wheel.
• Go with proven and solid technologies when you can.
• 아직까지는 성공적입니다. 곧 4번째 개발자도 함께 합니다.
2. 클라이언트
iOS
• objective-c
• 주로 자체 라이브러리를 제작하여 개발 합니다.
• 물론 필요하면 외부 라이브러리도 많이 사용 합니다.
• cocos 2d 프레임워크 개발을 진행해 본 적이 있습니다.
iOS
• objective-c 는 c 가 아닙니다.
• 요새는 android 보다 fragmentation issue 가 많다는 느낌도 듭니다.
• 최신 버전 이용자가 높은 편이라 OS fragmentation issue 는 덜합니다.
Android
• java
• 주로 자체 라이브러리를 제작하여 개발 합니다.
• 물론 필요하면 외부 라이브러리도 많이 사용 합니다.
Android
• xml layout 은 UI fragmentation problem 을 많이 해결 해 줍니다.
• 다만 Android OS 버전간의 문제는 종종 불편함을 야기할 때가 있습니다.
• GC 는 모든 메모리 오류를 찾아주지 못 합니다.
• eclipse 의 대안을 찾아볼 때가 된 것 같습니다.
하이브리드 앱?
Hybrid
• 적은 노력 대비 다양한 단말기를 제공할 수 있다는 것은 분명 큰 장점
• 하지만 네이티브 앱보다 느린 것 역시 너무나도 자명한 사실 입니다.
• 단말기 성능이 좋아져 봤자 그만큼 네이티브 앱 역시 더 빨라짐 ㅋ
• 서비스 초기 빠른 오픈을 위해서는 OK, 하지만 그 외에는…?
• 우리는 무조건 네이티브로 개발합니다.
Unity3D
Unity3D
• 요새 치킨 게임 중인 3D 엔진 업계에서 모바일 엔진으로 좀 잘나갑니다.
• 여러 플랫폼을 지원합니다.
• 상대적으로 저렴 합니다. 요샌 더 저렴해졌습니다!
• 개발도 개발이지만 리소스가 아주 중요합니다.
3. 서버
Hosting
• IaaS - AWS? uCloud?
• 아니면 PaaS - Google App Engine? Heroku?
• 우리의 선택은 IaaS - NHN NCloud 입니다.
• 빠른 레이턴시, 안정적인 서비스, 적당한 가격
• 인스턴스 종류가 제한적이며, Console API 가 없는 것은 좀…
OS
• Ubuntu 12.04 를 이용합니다.
• 작은 규모의 개발팀에게는 이보다 편하고 쓸만한 OS 가 없습니다.
• Advanced Packaging Tool
• PPA/Launchpad
Web Server
• 처음에는 Apache 를 사용 했었습니다.
• 손에 익은 서버였고, 뭐 사용하는데 큰 불편함은 없습니다.
• 지금은 Nginx 를 이용하고 있습니다.
• 가볍고 뛰어난 성능, 특히 높은 static file serving performance
• 반드시 Apache 를 써야 할 상황이 아니라면 Nginx 가 짱짱맨입니다.
Application Server
• uwsgi 를 이용하고 있습니다.
• 웹 서버와 reverse proxy 로 연결되어 동작합니다.
• 뛰어난 성능을 보여 줍니다.
• 웹 서버와 분리되어 있어 관리의 용이성이 훨씬 좋습니다.
Web Application
• Django 를 이용하고 있습니다.
• python 기반의 프레임워크들 중 하나이며, 풀 스택 프레임워크입니다.
• 별 생각없이 빠르게 웹 어플리케이션을 생산할 때 아주 큰 도움이 됩니다.
• 입맛에 맞는 미들웨어를 고를 수 없다는 것은 가끔씩 아쉽습니다만 뭐 그닥…ㅋ
Deployment
• Fabric 을 사용하여 앱 어플리케이션을 배포합니다.
• python 기반의 ssh streaming library 입니다.
• parallel execution 을 지원하여 서버 배포를 빠르게 진행할 수 있습니다.
Task Queue
• Celery 를 이용하고 있습니다.
• 수행시간이 오래 걸리는 작업을 백그라운드에서 처리하게 하거나
• Push Notification 을 처리할 때 주로 사용합니다.
• 늘 그렇듯이, 잘 설정해 놓고 잊고 있으면 됩니다.
Data Storage
SQLite
• Not as a replacement for Oracle but as a replacement for fopen()
• 상용 서비스에 활용하고 싶은 생각이 항상 있지만 몇몇 단점이…
• 프로토타이핑하거나,
• 클라이언트 내장 데이터베이스 용도로 주로 사용합니다.
• django - sqlite 로 웹 서비스를 만들어 데이터 생성 후 sqlite 파일만 추출!
MySQL
• 전체적으로 성능은 참 좋습니다.
• Reliability, Concurrency Problem
• 게다가 Oracle 인수 후 뚜렷한 발전사항이 없습니다.
• 정말 MySQL 이 좋다면, MariaDB 를 사용합시다. 지금 바꾸세요.
PostgreSQL
• “The world's most advanced open source database”
• 발음하기도 더러운 오픈소스 데이터베이스
• High Reliability, ACID compliance
• 저희가 주력으로 사용하는 데이터베이스입니다.
• PgBouncer - “lightweight connection pooler for PostgreSQL”
STATIC FILE Serving
• Amazon S3 같은거!!
• 클라우드 서버 하나에 Nginx 를 올려서 잘 사용하고 있습니다.
• 파일 업로드를 위해 Django RESTful API Server 가 동작 중입니다.
Memcached
• 쉽게 사용 가능한 캐시 서버입니다.
• django 는 memcached 를 기본 지원하므로 정말 손쉽게 적용 가능합니다.
• 다만 그 경우 invalidation 이 시간 단위로만 세팅이 되서…
• redis 에 밀려 예전같지 않습니다만 여전히 강력합니다.
Redis
• memcached 보다 더 다양한 기능을 제공합니다.
• RDB, AOF 기능은 메모리 캐시의 단점을 잘 극복해 주는 기능입니다.
• 별 생각 없이 캐시서버를 도입하고 싶다면 그냥 redis.io 에 접속하세요.
• 어제 jemalloc 과 함께 적용해 보았습니다. 좋네요 ㅋ
Monitoring
NewRelic
• 아 이건 진짜 좋습니다. 참 좋은데 뭐라 설명을 할 방법이 없네요.
• 웹 어플리케이션에 간단하게 붙여서
• 생각할 수 있는 거의 대부분의 정보를 확인할 수 있습니다.
• 서비스 튜닝을 위해서라면 도입을 정말 추천합니다.
NRISE 개발스택
NRISE 개발스택
이 솔루션들은 모두 마일까요?
서버 호스팅을 제외하고,
무료입니다.
* Unity3D, NewRelic 은 특정 라이센스에 한해 무료입니다.
4. 적용 사례
프로젝트 C
Unity3D
Android iOS
C#/JS Script
프로젝트 P with H
Cocoa
Cocos2D
In-house Libs
프로젝트 B with P - Client
Android iOS
PhoneGap
HTML5/CSS/JS
In-House Libs
프로젝트 B with P - Server
Apache + mod_wsgi
CentOS
SQLite Django
API
프로젝트 T with T
Apache + mod_wsgi
Ubuntu
MySQL Django
API/CMS
Memcached
프로젝트 F with S
Nginx
Ubuntu
uWSGI
postgreSQL django
Redis
BootStrap
CMS
API
QnA
감사니다.

More Related Content

NRISE 개발스택

  • 3. 현재 상황 • 2011년 창업 하였습니다. • 주로 스마트폰 기반의 앱/서비스를 개발하고 있습니다. • 1명의 개발자로 시작하여 지금까지 3명의 개발자가 있습니다. • 해야 할 일은 많지만 3명의 개발자로 소화하고 있습니다. • 급하게 개발자를 채용하고 싶은 생각은 없습니다.
  • 4. 원칙 • 성공적인 소규모 스타트업을 끊임없이 벤치마킹 합니다. • Keep it very simple. • Don’t re-invent the wheel. • Go with proven and solid technologies when you can. • 아직까지는 성공적입니다. 곧 4번째 개발자도 함께 합니다.
  • 6. iOS • objective-c • 주로 자체 라이브러리를 제작하여 개발 합니다. • 물론 필요하면 외부 라이브러리도 많이 사용 합니다. • cocos 2d 프레임워크 개발을 진행해 본 적이 있습니다.
  • 7. iOS • objective-c 는 c 가 아닙니다. • 요새는 android 보다 fragmentation issue 가 많다는 느낌도 듭니다. • 최신 버전 이용자가 높은 편이라 OS fragmentation issue 는 덜합니다.
  • 8. Android • java • 주로 자체 라이브러리를 제작하여 개발 합니다. • 물론 필요하면 외부 라이브러리도 많이 사용 합니다.
  • 9. Android • xml layout 은 UI fragmentation problem 을 많이 해결 해 줍니다. • 다만 Android OS 버전간의 문제는 종종 불편함을 야기할 때가 있습니다. • GC 는 모든 메모리 오류를 찾아주지 못 합니다. • eclipse 의 대안을 찾아볼 때가 된 것 같습니다.
  • 11. Hybrid • 적은 노력 대비 다양한 단말기를 제공할 수 있다는 것은 분명 큰 장점 • 하지만 네이티브 앱보다 느린 것 역시 너무나도 자명한 사실 입니다. • 단말기 성능이 좋아져 봤자 그만큼 네이티브 앱 역시 더 빨라짐 ㅋ • 서비스 초기 빠른 오픈을 위해서는 OK, 하지만 그 외에는…? • 우리는 무조건 네이티브로 개발합니다.
  • 13. Unity3D • 요새 치킨 게임 중인 3D 엔진 업계에서 모바일 엔진으로 좀 잘나갑니다. • 여러 플랫폼을 지원합니다. • 상대적으로 저렴 합니다. 요샌 더 저렴해졌습니다! • 개발도 개발이지만 리소스가 아주 중요합니다.
  • 15. Hosting • IaaS - AWS? uCloud? • 아니면 PaaS - Google App Engine? Heroku? • 우리의 선택은 IaaS - NHN NCloud 입니다. • 빠른 레이턴시, 안정적인 서비스, 적당한 가격 • 인스턴스 종류가 제한적이며, Console API 가 없는 것은 좀…
  • 16. OS • Ubuntu 12.04 를 이용합니다. • 작은 규모의 개발팀에게는 이보다 편하고 쓸만한 OS 가 없습니다. • Advanced Packaging Tool • PPA/Launchpad
  • 17. Web Server • 처음에는 Apache 를 사용 했었습니다. • 손에 익은 서버였고, 뭐 사용하는데 큰 불편함은 없습니다. • 지금은 Nginx 를 이용하고 있습니다. • 가볍고 뛰어난 성능, 특히 높은 static file serving performance • 반드시 Apache 를 써야 할 상황이 아니라면 Nginx 가 짱짱맨입니다.
  • 18. Application Server • uwsgi 를 이용하고 있습니다. • 웹 서버와 reverse proxy 로 연결되어 동작합니다. • 뛰어난 성능을 보여 줍니다. • 웹 서버와 분리되어 있어 관리의 용이성이 훨씬 좋습니다.
  • 19. Web Application • Django 를 이용하고 있습니다. • python 기반의 프레임워크들 중 하나이며, 풀 스택 프레임워크입니다. • 별 생각없이 빠르게 웹 어플리케이션을 생산할 때 아주 큰 도움이 됩니다. • 입맛에 맞는 미들웨어를 고를 수 없다는 것은 가끔씩 아쉽습니다만 뭐 그닥…ㅋ
  • 20. Deployment • Fabric 을 사용하여 앱 어플리케이션을 배포합니다. • python 기반의 ssh streaming library 입니다. • parallel execution 을 지원하여 서버 배포를 빠르게 진행할 수 있습니다.
  • 21. Task Queue • Celery 를 이용하고 있습니다. • 수행시간이 오래 걸리는 작업을 백그라운드에서 처리하게 하거나 • Push Notification 을 처리할 때 주로 사용합니다. • 늘 그렇듯이, 잘 설정해 놓고 잊고 있으면 됩니다.
  • 23. SQLite • Not as a replacement for Oracle but as a replacement for fopen() • 상용 서비스에 활용하고 싶은 생각이 항상 있지만 몇몇 단점이… • 프로토타이핑하거나, • 클라이언트 내장 데이터베이스 용도로 주로 사용합니다. • django - sqlite 로 웹 서비스를 만들어 데이터 생성 후 sqlite 파일만 추출!
  • 24. MySQL • 전체적으로 성능은 참 좋습니다. • Reliability, Concurrency Problem • 게다가 Oracle 인수 후 뚜렷한 발전사항이 없습니다. • 정말 MySQL 이 좋다면, MariaDB 를 사용합시다. 지금 바꾸세요.
  • 25. PostgreSQL • “The world's most advanced open source database” • 발음하기도 더러운 오픈소스 데이터베이스 • High Reliability, ACID compliance • 저희가 주력으로 사용하는 데이터베이스입니다. • PgBouncer - “lightweight connection pooler for PostgreSQL”
  • 26. STATIC FILE Serving • Amazon S3 같은거!! • 클라우드 서버 하나에 Nginx 를 올려서 잘 사용하고 있습니다. • 파일 업로드를 위해 Django RESTful API Server 가 동작 중입니다.
  • 27. Memcached • 쉽게 사용 가능한 캐시 서버입니다. • django 는 memcached 를 기본 지원하므로 정말 손쉽게 적용 가능합니다. • 다만 그 경우 invalidation 이 시간 단위로만 세팅이 되서… • redis 에 밀려 예전같지 않습니다만 여전히 강력합니다.
  • 28. Redis • memcached 보다 더 다양한 기능을 제공합니다. • RDB, AOF 기능은 메모리 캐시의 단점을 잘 극복해 주는 기능입니다. • 별 생각 없이 캐시서버를 도입하고 싶다면 그냥 redis.io 에 접속하세요. • 어제 jemalloc 과 함께 적용해 보았습니다. 좋네요 ㅋ
  • 30. NewRelic • 아 이건 진짜 좋습니다. 참 좋은데 뭐라 설명을 할 방법이 없네요. • 웹 어플리케이션에 간단하게 붙여서 • 생각할 수 있는 거의 대부분의 정보를 확인할 수 있습니다. • 서비스 튜닝을 위해서라면 도입을 정말 추천합니다.
  • 33. 이 솔루션들은 모두 마일까요?
  • 35. 무료입니다. * Unity3D, NewRelic 은 특정 라이센스에 한해 무료입니다.
  • 38. 프로젝트 P with H Cocoa Cocos2D In-house Libs
  • 39. 프로젝트 B with P - Client Android iOS PhoneGap HTML5/CSS/JS In-House Libs
  • 40. 프로젝트 B with P - Server Apache + mod_wsgi CentOS SQLite Django API
  • 41. 프로젝트 T with T Apache + mod_wsgi Ubuntu MySQL Django API/CMS Memcached
  • 42. 프로젝트 F with S Nginx Ubuntu uWSGI postgreSQL django Redis BootStrap CMS API
  • 43. QnA