SlideShare a Scribd company logo
1 of 44
Download to read offline
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
• 아 이건 진짜 좋습니다. 참 좋은데 뭐라 설명을 할 방법이 없네요.
• 웹 어플리케이션에 간단하게 붙여서
• 생각할 수 있는 거의 대부분의 정보를 확인할 수 있습니다.
• 서비스 튜닝을 위해서라면 도입을 정말 추천합니다.
이 솔루션들은 모두 얼마일까요?
서버 호스팅을 제외하고,
무료입니다.
* 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

What's hot

[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)Sang Don Kim
 
ALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaKyuhyun Byun
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기GyeongSeok Seo
 
[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)Sang Don Kim
 
Using CloudFront and S3 at SMARTSTUDY
Using CloudFront and S3 at SMARTSTUDYUsing CloudFront and S3 at SMARTSTUDY
Using CloudFront and S3 at SMARTSTUDYHyun-woo Park
 
두근두근 ASP.NET 5!
두근두근 ASP.NET 5!두근두근 ASP.NET 5!
두근두근 ASP.NET 5!SangHoon Han
 
Project TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeProject TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeJesang Yoon
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYHyun-woo Park
 
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)Sang Don Kim
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS LambdaSeungho Kim
 
CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기Kyuhyun Byun
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!SangHoon Han
 
신규 협업도구 사용자 교육(공통 비개발자)
신규 협업도구 사용자 교육(공통 비개발자)신규 협업도구 사용자 교육(공통 비개발자)
신규 협업도구 사용자 교육(공통 비개발자)Byeongsu Kang
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
임태현, IIS with ASP.NET
임태현, IIS with ASP.NET임태현, IIS with ASP.NET
임태현, IIS with ASP.NET태현 임
 
잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표Seokmin No
 

What's hot (20)

[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)
 
ALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + Lambda
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기
 
[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)
 
Using CloudFront and S3 at SMARTSTUDY
Using CloudFront and S3 at SMARTSTUDYUsing CloudFront and S3 at SMARTSTUDY
Using CloudFront and S3 at SMARTSTUDY
 
두근두근 ASP.NET 5!
두근두근 ASP.NET 5!두근두근 ASP.NET 5!
두근두근 ASP.NET 5!
 
Project TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeProject TIMAT - infrastructure as code
Project TIMAT - infrastructure as code
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
 
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
Umbraco Introduction
Umbraco IntroductionUmbraco Introduction
Umbraco Introduction
 
CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
 
Vue.js와 Firebase활용기
Vue.js와 Firebase활용기Vue.js와 Firebase활용기
Vue.js와 Firebase활용기
 
신규 협업도구 사용자 교육(공통 비개발자)
신규 협업도구 사용자 교육(공통 비개발자)신규 협업도구 사용자 교육(공통 비개발자)
신규 협업도구 사용자 교육(공통 비개발자)
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
Server
ServerServer
Server
 
임태현, IIS with ASP.NET
임태현, IIS with ASP.NET임태현, IIS with ASP.NET
임태현, IIS with ASP.NET
 
20201223 jquery
20201223 jquery20201223 jquery
20201223 jquery
 
잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표
 

Viewers also liked

데비안 패키지 관리하기.
데비안 패키지 관리하기.데비안 패키지 관리하기.
데비안 패키지 관리하기.licubeclub
 
디스크 기반 Skip list를 사용한 대용량 실시간 랭킹 : WoW 랭킹 서비스 wowz.kr를 사례로
디스크 기반 Skip list를 사용한 대용량 실시간 랭킹: WoW 랭킹 서비스 wowz.kr를 사례로디스크 기반 Skip list를 사용한 대용량 실시간 랭킹: WoW 랭킹 서비스 wowz.kr를 사례로
디스크 기반 Skip list를 사용한 대용량 실시간 랭킹 : WoW 랭킹 서비스 wowz.kr를 사례로Seok-ju Yun
 
Py conkr 20150829_docker-python
Py conkr 20150829_docker-pythonPy conkr 20150829_docker-python
Py conkr 20150829_docker-pythonEric Ahn
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bashpyrasis
 
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기Kwangyoun Jung
 
Key-Value Store를 사용한 대용량 게임 통계 : WoW 경매장 분석 서비스 wowz.kr를 사례로
Key-Value Store를 사용한 대용량 게임 통계: WoW 경매장 분석 서비스 wowz.kr를 사례로Key-Value Store를 사용한 대용량 게임 통계: WoW 경매장 분석 서비스 wowz.kr를 사례로
Key-Value Store를 사용한 대용량 게임 통계 : WoW 경매장 분석 서비스 wowz.kr를 사례로Seok-ju Yun
 
Webkit/chromium contribution process
Webkit/chromium contribution processWebkit/chromium contribution process
Webkit/chromium contribution processNAVER LABS
 
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentationre4lfl0w
 
AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...
AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...
AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...NAVER LABS
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃Kwangyoun Jung
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012Daum DNA
 
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoulJoeun Park
 
Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google KubernetesYongbok Kim
 
도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기JunSeok Seo
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering PipelineHyungwook Lee
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Dockerpyrasis
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지충섭 김
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집Daegwon Kim
 

Viewers also liked (20)

데비안 패키지 관리하기.
데비안 패키지 관리하기.데비안 패키지 관리하기.
데비안 패키지 관리하기.
 
디스크 기반 Skip list를 사용한 대용량 실시간 랭킹 : WoW 랭킹 서비스 wowz.kr를 사례로
디스크 기반 Skip list를 사용한 대용량 실시간 랭킹: WoW 랭킹 서비스 wowz.kr를 사례로디스크 기반 Skip list를 사용한 대용량 실시간 랭킹: WoW 랭킹 서비스 wowz.kr를 사례로
디스크 기반 Skip list를 사용한 대용량 실시간 랭킹 : WoW 랭킹 서비스 wowz.kr를 사례로
 
Py conkr 20150829_docker-python
Py conkr 20150829_docker-pythonPy conkr 20150829_docker-python
Py conkr 20150829_docker-python
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bash
 
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
 
Key-Value Store를 사용한 대용량 게임 통계 : WoW 경매장 분석 서비스 wowz.kr를 사례로
Key-Value Store를 사용한 대용량 게임 통계: WoW 경매장 분석 서비스 wowz.kr를 사례로Key-Value Store를 사용한 대용량 게임 통계: WoW 경매장 분석 서비스 wowz.kr를 사례로
Key-Value Store를 사용한 대용량 게임 통계 : WoW 경매장 분석 서비스 wowz.kr를 사례로
 
Webkit/chromium contribution process
Webkit/chromium contribution processWebkit/chromium contribution process
Webkit/chromium contribution process
 
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
 
AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...
AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...
AURALISATION OF DEEP CONVOLUTIONAL NEURAL NETWORKS: LISTENING TO LEARNED FEAT...
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012
 
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoul
 
Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google Kubernetes
 
도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
python and database
python and databasepython and database
python and database
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 

Similar to NRISE 개발스택

쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)Brian Hong
 
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디Chiung Choi
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기SungChanHwang
 
Ansible introduction & demo
Ansible introduction & demoAnsible introduction & demo
Ansible introduction & demoYongKi Kim
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability흥배 최
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기Seokjae Lee
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차Jongwon Han
 
한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법Hyunmin Kim
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면Byeongsu Kang
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017devCAT Studio, NEXON
 

Similar to NRISE 개발스택 (20)

쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
KGC 2013 DevSisters
KGC 2013 DevSistersKGC 2013 DevSisters
KGC 2013 DevSisters
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
 
Ansible introduction & demo
Ansible introduction & demoAnsible introduction & demo
Ansible introduction & demo
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
 
한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 

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 • 아 이건 진짜 좋습니다. 참 좋은데 뭐라 설명을 할 방법이 없네요. • 웹 어플리케이션에 간단하게 붙여서 • 생각할 수 있는 거의 대부분의 정보를 확인할 수 있습니다. • 서비스 튜닝을 위해서라면 도입을 정말 추천합니다.
  • 31.
  • 32.
  • 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