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번째 개발자도 함께 합니다.
9. Android
• xml layout 은 UI fragmentation problem 을 많이 해결 해 줍니다.
• 다만 Android OS 버전간의 문제는 종종 불편함을 야기할 때가 있습니다.
• GC 는 모든 메모리 오류를 찾아주지 못 합니다.
• eclipse 의 대안을 찾아볼 때가 된 것 같습니다.
11. Hybrid
• 적은 노력 대비 다양한 단말기를 제공할 수 있다는 것은 분명 큰 장점
• 하지만 네이티브 앱보다 느린 것 역시 너무나도 자명한 사실 입니다.
• 단말기 성능이 좋아져 봤자 그만큼 네이티브 앱 역시 더 빨라짐 ㅋ
• 서비스 초기 빠른 오픈을 위해서는 OK, 하지만 그 외에는…?
• 우리는 무조건 네이티브로 개발합니다.
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 과 함께 적용해 보았습니다. 좋네요 ㅋ