일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- REST
- API
- PowerMock
- node.js
- python
- Linux
- {}
- dict
- primitive type
- Coveralls
- NPM
- GIT
- 개인정보수정
- Code-coverage
- sanghaklee
- ubuntu
- sinopia
- 인프런
- Gitbook
- ATOM
- nginx
- Travis CI
- Unit-test
- ECMAScript2015
- java
- Lodash
- RESTful
- javascript
- AWS
- JaCoCo
Archives
- Today
- Total
이상학의 개발블로그
[티아카데미/클리닉] 조대협씨의 스타트업을 위한 모바일 백앤드 서버의 설계 본문
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
'교육 > 세미나' 카테고리의 다른 글
[세미나] Code States J2S 미니컨퍼런스 (0) | 2016.09.12 |
---|---|
[PHP / G Junior] Modern PHP & PSR (0) | 2016.09.12 |
[MySQL / G Junior] MySQL 아키텍처 (0) | 2016.08.29 |
[Ubuntu/7월 정기 세미나] Ubuntu 윈도우에서 리눅스 돌리기 특집 (0) | 2016.08.01 |
Comments