320x100
320x100

1. 코드 작성과 시스템 설계 시작 전 아이디어를 브레임스톰 해보고 간단하게 적어본다

 

2. 구축하려는 시스템 관련 전문 지식이 많은 사람과 화이트보드 세션을 진행하고 충분한 검토 과정을 거친다

: 잘못되거나 미완성된 설계를 바탕으로 시스템을 구현하면 나중에 문제가 생길 수 있다

 

3. 여러가지 설계 옵션을 파악하고, 각 옵션의 절충점을 이야기 해본다

: 한 문제에 직면했을때 가능한 여러가지 옵션을 간단히 적어보고 절충점을 따져보자

 

4. 가상 사용 케이스를 예상해본다

 

5. 시스템의 인터페이스를 잘 생각해보고 좋은 인터페이스를 디자인 한다.

 

6. 최상의 솔루션을 채택하고 시스템 성능을 추정해야 한다

 

7. 시스템을 설계하기 전 성능을 미리 예측해야한다

: RPS아 Storage Utilization 계산법을 미리 알아두면 좋다

 

8. 진화할 수 있는 시스템에 미리 대응해본다

: 시스템이 10배 확장되어도 잘 작동되어야 한다

 

9. 기본 개발 구성 요소에 대해 잘 알고 있어야 한다

: 코어 라이브러리, 기본 자료구조 등. 어떻게 구현되는지 자세하게 알아야 한다

 

10. 모든 요구사항을 충족하는 시스템을 설계하려고 하지 말자

 

11. 캐싱, 병렬실행을 통해 low latency 요구 사항 충족 시키기

 

12. Eventual Consistency와 Strong Consistency 모델 이해하기

 

※ Eventual Consistency

: 다른 클라이언트들이 변경된 데이터를 요청했을 때 어떤 클라이언트는 최신의 데이터를, 어떤 클라이언트는 오래된 데이터를 받는 경우

: 언젠가 동기화가 되면 모든 클라이언트가 동일한 데이터를 받아 볼 수 있게됨

 

※ Strong Consistency

: 관계형 데이터베이스와 같이 클라이언트간 일관된 데이터를 보장 받는 것

 

13. 데이터 액세스 타임 이해하기

 

14. 장애에 튼튼한 앱 구현하기

: Canary, 레플리케이션, 로드 밸런싱

 

※ Canary

: 구버전과 신버전을 구성하여 일부 트래픽을 신버전으로 분산시켜 테스트를 진행한뒤 서서히 옮기는 방식

: 위험감지를 위한 배포 전략으로 성능 모니터링에 유리

 

15. 장애 발생 시 전체 운영 중단보다 부분 기능이 작동하는 것이 더 낫다

 

16. 충분한 모니터링, 로깅, 디버깅 훅 추가하기

 

 

 

 

 

 

Reference

 

킴코더 / 라지 스케일 시스템을 구현하는 개발자가 아는 것 | 커리어리

라지 시스템을 구현하고 운영 및 관리하는 개발자의 조언을 읽어보고 정리해서 올립니다. 1. 코드 작성과 시스...

careerly.co.kr

 

Eventual Consistency 란?

분산 시스템을 구성하려면 CAP 이론에 의해서 일관성과 가용성 중 하나를 포기해야하는 상황이 올 수 있습니다.클라이언트의 요청을 받았을 때, A서버의 데이터가 변경되면 즉시 다른 서버에 반

velog.io

 

 

[쿠버네티스] 디플로이먼트 업데이트 전략(RolliingUpdate, ReCreate, Blue/Green, Canary)

들어가며: 디플로이먼트 란? 디플로이먼트의 전략 RollingUpdate Recreate 디플로이먼트 생성 및 확인 디플로이먼트 롤아웃 상태 확인 디플로이먼트 롤링업데이트 들어가며: 디플로이먼트 란? Deployment

nearhome.tistory.com

 

300x250
728x90