(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
대부분의 중소 모바일 게임 업체는 앱을 잘 만들기에도 시간이 모자라 출시일을 잘 맞추기 급급한 상황이다. 그러다 보니 운영을 위한 툴은 소홀히 개발하는 경우가 대부분이고 운영 캠페인은 날림으로 개발하거나 그때 그때 개발자가 필요한 부분만 개발하기 일쑤다. 그러다보니 마케터는 결국 늘 개발자 눈치만 살피게 된다. 필자는 블루윈드에서 이러한 문제를 절감했고 '모바일 게임 개발사가 앱 개발에만 집중할 수 있게 해주고 싶다'는 IGAworks의 철학에 공감하여 라이브 오퍼레이션 프로젝트를 시작하게 되었다.
라이브 오퍼레이션의 개발 중점과제는 5가지였다. 첫번째, 다수의 개발사가 하나의 큰 클라우드 시스템을 사용하도록 multi-tenant 인프라를 구축해야 한다. 두번째, TCO(Total cost of ownership)를 최소화해야 한다. 세번째, 앱의 핵심유저를 실시간으로 그룹화하여 타게팅 캠페인을 할 수 있어야 한다. 네번째, 캠페인의 성과를 마케터에게 실시간으로 피드백해야 한다. 다섯째, 3개월 안에 정식 서비스가 되어야 한다는 점이었다. (왜 우리에게 주어지는 시간은 늘 3개월인가) 그리고 당연하지만 이 서비스를 혼자 개발해야 했다.
이 다섯가지 이슈를 해결하기 위하여 AWS 클라우드 상에 생산성과 성능이 검증된 node.js 와 mongodb를 이용하여 서비스 백엔드를 구성하였고, multi-tenant를 구성하기 위한 여러가지 고민과 그 해결책을 직접 구현하였다. 필자는 node.js와 mongodb를 사용해 본 경험이 충분하다 생각했지만 대규모 정식 서비스를 진행하며 많은 함정에 빠졌고 결국 해결했다.
이 발표를 통해 청강자는 node.js와 mongodb를 이용하여 multi-tenant 인프라를 구축해야 할 때 고려해야 할 설계 방식과 기술적인 고민, 그것에 대한 현실적인 해법을 얻을 수 있다.
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
[Tensorflow-KR Offline 세미나 발표자료]
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps Cycle 구성 방법론. (Azure Docker PaaS 위에서 1만 TPS Tensorflow Inference Serving 방법론 공유)
This document is aimed for IT operators and related people to make sense of IT automation. And ansible is just a tool. but engineer can acquire automation skill easily with ansible. no needs to deep dive into tool itself. just use it then your work would be happier.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
Kubernetes advanced sheduling
- Taint and tolerant
- Affinity (Node & inter pod)
Learn how to place Pod like (same or different) node, rack, zone, region
4. Application servers
• Application servers
• Apache tomcat
• Jboss : 빵빵한 기술 지원. 근데 요즘 필요할까???
• Pythom Django, Flask
• Single Threaded Application Server (Optimized to C10K)
• node.js , verte.x
5. Reverse proxy
• Reverse proxy only : HAProxy
• Webserver + reverse proxy
• 캐슁, 압축, SSL 등 다양한 기능 추가 가능
• nginx : single thread and more faster
• Apache httpd
6. Message Queue
• RabbitMQ
• AMQP 기반, MQTT 지원
• 다양한 기능과 다양한 메세징 토폴로지 지원
• Active MQ
• JMS, 오래된 제품중 하나. 오래되서 안정성은 좋지만, 글쎄??
• ZeroMQ
• 제일 빠른 성능, 큐 미들웨어로 보기보다는 프레임웍으로 보는게 났지 않을까?
• Kafka
• 대용량 분산큐. 요즘 뜨는
• 기능이 매우 단순
7. 대용량 파일 시스템
• GlusterFS
• 파일 시스템에 마운트가 가능
• OpenStack SWIFT
• AWS S3와 유사한 Object Storage
• Ceph
8. 데이타 베이스
• RDBMS
• MySQL (언젠가는 유료화 BY 오라클?) , MariaDB
• 클러스터링
• MySQL Cluster (유료 BY 오라클)
• MySQL Replication (약간 타임랙이 있음)
• Galera Replication (타임랙은 없으나, 확장에 한계가 있음. 3노드가 적절 , 최대 5노드)
9. NOSQL
• 도큐먼트 DB 계열
• MongoDB
• RDB와 유사한 많은 기능 제공.
• 가장 널리 쓰임, 자료도 많고 쓰기도 쉽고
• 구조가 분산 구조가 아니라 샤딩 구조로 대용량으로 올라가면 확장성에 문제가 있음. (그때 되면 대박
나지 않았을까 이미??)
• CouchBase
• CouchDB 계열, memcached를 이용하여 자체 캐슁 레이어 제공.
• 링구조의 아키텍쳐.
• 자체 콘솔 제공
• 최신 버전은 유료, 그 아래 버전은 무료
• 구조상은 제일 아름다운데….
10. NOSQL
• Cassandra
• Dynamo 기반 링구조
• 빠른 쓰기 성능
• Eventual consistency
• Column 패밀리 기반
• Hbase
• 구글 빅테이블 구조 기반
• 옛날에는 카산드라와 양대 산맥이었는데, 요즘은 어디에??
11. NOSQL
• Elastic Search
• 요즘 재미있는 제품. 예전에 검색 서버인줄만 알았는데
• 요즘 ELK 스택과 더불어 분석 기능을 제공함. 다음 버전에는 큐브 기반의 분석까지 제공 예정
• NoSQL과 더불어 검색용 스토리지로 보완해서 쓰면 좋음.
• 문제는 한글…
12. In memory db
• Memcached
• Redis
• 다양한 테이타 모델.
• 대세
• 근데 클러스터링이 안됨 (자체 샤딩하셔야)
• 스냅샷뜰때 Fork 되면서 SWAP발생하면 성능 저하
• Infinispan
• Hazelcast
13. Identity management
• 딱히 대세가 없음.
• OPEN IDM : Sun의 IDM을 오픈소스화 해서 성숙도가 높은데, 옛날 느낌나고, 무거움
• WSO IDM : 그나마 나음. 제품이 깔끔하게 정리되어 있고 개념 잡기 좋음