요즘 잘나간다는 SNS 서비스 (텀블러, PInterest)등의 내부 서비스 아키텍쳐나 운영 구조를 공개된 글을 보면 SNS 시스템들의 기술 트렌드를 읽을 수 있다.
1. 소규모 조직이다.
얼마전에 FB에 인수된 Instantgram이나 다른 잘나가는 SNS서비스 업체들을 보면 대부분 인력이 20명이내이다.
영업 조직이 있는 솔루션 업체의 경우는 영업이나 Director들을 포함하더라도 40명이 안넘는 것이 대부분이다.
이는 빠른 의사 결정을 가능하게 하기 때문에, 상당히 빠른 서비스 개선을 가능하게 한다.
기술적이나 기획적으로 대단한게 아니라, 하나의 기능을 편하게 만들고 사용자 경험에 상당한 노력을 쏟는다.
2. 오픈 소스로 치덕치덕. & Don't invent wheel again
이런 서비스들 치고, 대형 벤더 솔루션 쓰는 곳을 못봤다.
- 대부분 오픈 소스를 사용한다.
- 여러가지 언어를 사용한다. 우리가 한국에서 익숙한 자바나 C는 일부에 사용되지 전체를 자바나 C로만 구현하지는 않는다. 오히려 Erlang, Python, Ruby같은 언어들이 급격하게 올라온다.
- 기존의 오픈 소스를 활용을 하지 새롭게 솔루션을 만드는 경우가 없다.
3. Devops
Devops는 Development와 Operaion (개발과 운영)을 합친 말로, 이 두팀을 분리하지 않고 개발팀이 개발과 운영을 모두 맏는 개발 운영 모델이다. 요즘 들어 상당히 유행하는데, 운영에서 얻어지는 노하우나 문제를 개발팀에서 처리하는데 비용을 덜고, 고객으로부터의 요청에 빠르게 대응하기 위한 구조로, 운영 팀을 별도로 두지 않는다.
이 것이 가능한것은 클라우드를 사용하면서 하드웨어 인프라에 대한 운영을 클라우드 업체가 담당하기 때문에, 거창한 운영 조직이 필요없고, 클라우드 상에 배포 구조만 잘 잡으면 되기 때문에 가능해진 일이라고 본다.
4. Cloud
앞에서도 이야기 했지만, 잘나가는 서비스들은 AWS (Amazon Web Service)를 사용한다.
초기 투자 비용 (Capex)가 들지 않고, 전 세계 커버리지가 가능하며, HA (High Availibility) 구성이 가능하고, 서비스 부하에 따라서 탄력적으로 컴퓨팅 자원을 늘리거나 줄일 수 있기 때문이다.
5. 하나씩 차근차근
놀라운 것중 하나는 수백만명을 대상으로 서비스하는 시스템이라도, 처음부터 수백만명을 지원하기 위한 설계를 하는 것이 아니라 기존에 익숙한 기술을 사용하고, 사용자가 늘어감에 따라 아키텍쳐나 기술셋을 점차적으로 바꿔 나가는 구조를 사용한다.
주요 아키텍쳐 구조는
앞단에 Nginx나 Apache와 같은 웹서버
중간에 Redis나 memcached 같은 메모리 데이타 그리드
Tomcat,Django와 같은 WAS
Java 뿐만 아니라 Erlang, Python,RoR과 같은 스크립트 언어 또는 분산 처리 언어
MySQL 을 사용할 경우 Sharding, 또는 NoSQL을 백엔드에 사용
이 전체는 AWS 클라우드 위에 Deployment
아키텍쳐는 REST를 사용하는 구조를 갖는다.
필요에 따라 배치 처리나 분석 처리를 위해서 Hadoop등의 분산 처리 프레임웍을 사용
'클라우드 컴퓨팅 & NoSQL > 운영 & Devops' 카테고리의 다른 글
개발과 운영의 조화 - Devops #1/2 (2) | 2013.11.18 |
---|---|
배포 자동화 (Continuous Deployment) (6) | 2013.08.17 |
Centralized Monitoring (0) | 2013.04.18 |
조직의 성숙도별 개발 모델 (Devops & CD) (1) | 2013.03.14 |
Ganglia 아키텍쳐 (0) | 2012.12.03 |