교육/세미나
[티아카데미/클리닉] 조대협씨의 스타트업을 위한 모바일 백앤드 서버의 설계
학학이
2016. 5. 2. 10:50
2016.04.20에 티아카데미에서 진행된 트라이앵글 클리닉
'스타트업을 위한 모바일 백앤드 서버의 설계' 조대협 씨의 강의 내용입니다.
문제시 삭제하겠습니다.
최근 트렌드
클라우드, 스크립트 언어(Node, Python, Ruby 비추), Devops, 자동화
클라우드
클라우드 장점 | 설계시 고려 사항 |
빠른 시장 진입
| 느림, IO
|
운영비 절감
| 싸지 않음
|
초기 투자비 절감
| 기존 솔류션이 안됨(UDP)
|
유연한 자원 사용
| 장애
|
AWS는 네트워크 비용도 받음
#1
SOA: Enterprise SOA(책),
http://highscalability.com/ - 대용량 아키텍쳐
요즘은 백엔드 = API
Reduntant : 서버가 죽어도 다른게 대체해서 사용자 불편을 최소화, 엔터프라이즈 서비스에 유리
Resilience : 장애나면 죽이고 다른거 빨리 쓴다.
파티셔닝
- 데이터를 여러 DB에 나눠 저장.
- 데이터 쏠림 주의 (NoSQL 사용으로 대체)
MySQL은 한 테이블에 10억개까지 저장가능
읽기와 쓰기를 분리
- 읽기 : 쓰기 = 80 : 20
- AWS 설정 가능
- 스테이징 DB 복제만 담당
캐싱
- 대용량에선 가능한 모든걸 캐시한다.
- CDN, CloudFlare
- html, 이미지, 목록 다 CDN에 넣어서 서버의 부하를 줄인다.
- 퍼징 주의, CDN 데이터 삭제 힘듬. 퍼징 : 삭제까지 필요한 기간
- 프록시 서버로 캐싱(Nginx), 퍼지 타임 영향 안 받음
- Redis를 사용
부하분산
- 로드밸런싱 : L4, L7, Proxy(HAProxy, Nginx), ELB
- HAProxy ? http://d2.naver.com/helloworld/284659
- pagespeed plugin : 주석 없애줌, 지능형 압축
- 글로벌 로드 밸런싱 : AWS Route 53 이용
- 글로벌 서비스
- 국가 리전마다 HAProxy 두고 Route53으로 붙는다
- 웹 브라우저 locale 보고 국가 지정한다
로깅
- 로그 올리는 법 : 전체를 일정 시간에 하지말고 시간을 나눠서 보내게 한다.
- log = ELK ( 시스템 로깅 )
- Sentry: 이벤트 로깅,
- Flurry : 모바일 로깅, 야후, 비장의 카드 ( 트위터 패브릭 : 실시간 로깅, 진짜 쉬움)
#2
VOC 수용
자동화
다음 아키텍쳐 예상
- 서버가 아예 없는( Serverless Computing )
- AWS Lambda, Azure Function
- 인공지능 & 빅데이터 분석 API
- 만들려고 하지 말고 가져다 쓰자
일반적인 시스템 구조
- 비즈니스 로직
- 대외 연게 : 외부 open api 쓰는 거
- 데이터 수집
- OSS
- BSS
SOA 기반 대용량 분산 아키텍쳐
- Apache Camel
- WSO2 Identity Server : 계정 관리에 대한 개념만 볼것. 어려움
API 게이트 웨이
트렌잭션 처리
- API token 사용하면 무조건 JWT
- node.js : 싱글 쓰레드 ( 커피 카운터 직원은 주문만 받고 주문서를 넘긴다. 만약 주문자가 주문을 길게 하면 다른 사람들 다 주문 못한다. )
- 멀티 쓰레드 ( 직원 10명이 주문 받고 커피 만든다 )
- 모바일 서비스는 큰 트랜잭션을 처리하는 경우가 적다.
- V8은 메모리 닉이 많다. 무조건 죽는다 생각하고 빨리 복구하자
비동기 에러 처리
- 에러 처리가 중요하다. 에러 발생 시 에러 큐에 보낸다.
모바일 서비스는 푸시가 중요
NoSQL = MongoDB ( 일정 범위 이상 넘어가면 스케일 아웃 불가, 확장성 불리 )
카산드라 : 쓰기 성능이 좋다
데이터 분석 및 리포팅
- 람다 아키텍쳐 : 실시간성
- 원본 데이터는 빠지지 말고 다 저장한다.
배포 시스템 : Fabric, Ancible
모니터링 : Newrelic
APM : SCOUT
클라우드 서비스 : LogEntries
ComposeIO
A/B 테스팅
- Amazon AB Testing
- Optimizely
- Taplytics
- Apptimize
UXCAM
- 어디 많이 클릭 하는지
- 어디 페이지에 머무르는지
모바일 앱 테스트 환경
- xamarine test-cloud
- AWS device-farm
유용한 서비스
- 푸시: onesignal
- 무료 CDN : CloudFlare
- 보안 스캐닝 : tinfoilsecurity