• 어플리케이션, 백엔드 서버는 모두 nginx 를 통해 reverse proxying 되어 서비스 됩니다. nginx 는 빠르고, 안정적이고, 매우 간편합니다.


  • 점점 더 구글 어널리틱스의 기능이 강력해지고 있습니다. 이용자의 행동을 분석하는데 있어서 GA 이상 가는 툴은 존재하지 않는 것 같네요 :)


  • 회사 블로그는 github pages 를 통해 관리되고 있습니다.


  • 모든 소스코드는 github 에서 관리됩니다. github 는 단순히 git 저장소 뿐 아니라 소스코드와 관련된 다양한 통계와 이슈 트래킹을 지원합니다. github 하나면 프로젝트 관리가 거의 한 번에 해결됩니다.


  • 몇몇 로그는 현재 AWS DynamoDB 에 기록되고 있습니다. 개선을 통해 mongodb 로 옮길 계획을 하고 있습니다. 아주 간단한 데이터를 쌓는 용도로는 나쁘지 않습니다. 다만, 쿼리가 아주 제한적입니다. 사용하기 전에 반드시 DynamoDB 의 스펙을 확인할 필요가 있습니다.


  • 모씨의 모든 이미지는 S3 에 저장됩니다. S3는 저렴할 뿐 아니라 99.999999999%의 내구성과 99.99%의 가용성을 보장하고 있습니다. 이곳에 이용자들이 생성한 수 테라바이트의 이미지가 저장되어 있습니다.


  • 커뮤니케이션을 하는 데에 있어 slack 만큼 좋은 툴은 없습니다.


  • 느려지고 쓸데없이 비대해지기만 한 eclipse 의 아주 좋은 대안입니다. gradle 은 정말 강력합니다.


  • xcode 없이 iOS 개발을 하는 것은 사실 상 불가능합니다. :)


  • 현 상황에서 java 는 생산성이 높은 언어라고 볼 수 없습니다. 또한 아직 우리에겐 java 를 사용해야 할 만큼 미션 크리티컬한 이슈는 존재하지 않습니다. java 를 사용하는 단 하나의 이유는 안드로이드 개발을 위해서입니다.


  • iOS 개발을 위해 사용하는 언어입니다. 조만간 swift 로의 포팅을 생각중입니다.


  • 안드로이드 개발할 때 이거 없으면 못해요.


  • 어플리케이션 서버 및 각종 서버들을 모니터링하는데 이만한 툴이 없습니다. 어플리케이션 서버의 퍼포먼스 드릴다운 모니터링이나 각 서버들의 활성화 상태를 모니터링 하는 용도로 사용합니다.


  • memcached 와 비슷한 퍼포먼스를 내면서 persistence 지원을 통해 in-memory cache 의 단점을 충분히 극복합니다. 메인 캐시서버로 사용하고 있습니다.


  • 모든 서버는 EC2 를 이용하고 있습니다. 가격이 저렴하다고는 할 수 없습니다만 신뢰성 있고, 관리가 아주 편리합니다. 원하는 만큼 순식간에 서버를 증설했다가 필요없을 때 바로 반납해버릴 수 있기 때문에 스타트업에서 이만한 IaaS 를 찾을 수 없다고 생각합니다. 저희가 사용하는 지역은 도쿄입니다.


  • 로그성 데이터는 mongodb 에 기록됩니다. 뛰어난 성능이 강점입니다만 NOSQL 의 특성을 이해하지 못하고 사용할 경우에는 오히려 독이 될 수 있습니다.


  • RDBMS 가 필요한 경우 모두 postgresql 을 사용합니다. 신뢰성 있고, 안정적이며, 오픈소스입니다.

    데이터베이스의 앞에는 pgbouncer 라는 connection pooler 를 사용합니다. 어플리케이션 서버에서 데이터베이스에 연결하는데 1ms 대가 소요됩니다.


  • 백엔드, 어플리케이션 서버 모두 시간이 걸리는 작업들 및 주기적으로 수행해야 하는 작업들은 celery/celerybeat 을 통해 동작됩니다. 신뢰도가 아주 높으며, 유연합니다. gevent 로 동작시키면 더욱 깔끔한 관리가 가능합니다.


  • 백엔드 시스템을 구축할 때 django 를 이용하였습니다. django 로 최초 백엔드 시스템을 구축하는데 3일이 걸리지 않았습니다.


  • 어플리케이션 서버는 flask 로 작성되었습니다. 미니멀하며, 어플리케이션 서버를 구축하는데 필요한 것들은 대부분 준비되어 있습니다.


  • 일반적으로 모씨를 개발하며 가장 자주 사용하는 스크립트 언어입니다. 쉽고, 빠르고, 강력하고, 월등한 생산성을 가집니다. 저희는 아직 python 2.7 을 사용하고 있습니다.


  • HTML/CSS 를 프레임워크화 한 부트스트랩 덕에 내부 백엔드 시스템을 정말 쉽고 생산성 있게 구축할 수 있었습니다.


  • 소스코드나 리소스들의 공유 및 백업 용도로써 이보다 나은 툴은 없습니다.


  • jetbrain 의 IDE 들은 생각 없이 믿고 쓸 수 있습니다.


  • 대부분의 EC2 의 스토리지는 EBS 를 마운트해서 사용하고 있습니다. 특히 데이터베이스 서버들의 경우 주기적으로 스냅샷을 생성하여 손쉽게 백업 관리를 진행하고 있습니다.


  • 간단한 설정으로 이메일 설정, 클라우드 문서 작성을 할 수 있다는 점은 정말 큰 장점입니다.


  • celery broker 로써 erlang 기반의 rabbitmq 를 클러스터링 구성하여 적용 하였습니다.


  • 수 백만개가 넘는 태그 키워드의 자동완성을 위해서 별도의 데이터베이스를 구축하였습니다. MariaDB 는 MySQL 을 포크한 프로젝트입니다. MySQL 과의 강력한 호환성을 지니며, 큰 튜닝 없이 강력한 성능을 보장합니다.


  • CloudFront 는 수십 테라 바이트의 이미지 트래픽을 안정적으로 소화해 주며, CFRC 약정을 통해 요금 할인 혜택도 추가적으로 얻을 수 있습니다.


  • 내부 검색 엔진을 Solr 기반의 AWS CloudSearch 에서 Elasticsearch 로 옮기고 있는 중입니다. 관리의 편의성 등에서 좋은 점수를 줄 수 있습니다.


  • rabbitmq 의 로드 밸런싱 용도이자 celery 의 connection pooling 을 담당하기 위해 HAProxy 를 도입하여 사용하고 있습니다.


  • 빌드 자동화 툴로 jenkins 를 사용하고 있습니다.


  • newrelic 이 최근에 error analytics 에 과금을 한다는 예고를 해서 일단 sentry 를 적용하였습니다. 오픈소스 버전도 있지만, 호스팅 버전의 경우에도 충분히 합리적인 가격과 서비스를 제공합니다. 게다가 newrelic 의 error analytics 보다 훨씬 다양한 기능을 제공합니다.



Verified by
Stack Match

Favorite
7
Views
1933


Favorite
Views
1933