라지 스케일 시스템을 구현하는 개발자가 아는 것

라지 시스템을 구현하고 운영 및 관리하는 개발자의 조언을 읽어보고 정리해서 올립니다. 1. 코드 작성과 시스템 설계 시작 전 아이디어를 브레인스톰해보고 간단하게 적어본다. 2. 구축하려는 시스템 관련 전문 지식이 많은 사람과 화이트보드 세션을 진행하고 충분한 검토 과정을 거친다. 📌 추가: '설계 검토' 기간이 길어지게 되면 급한 마음에 충분히 피드백을 반영하지 않고 급하게 시스템을 구축하는 경우가 생기는 것 같아요. 하지만 잘못된 (또는 미완성된) 설계를 바탕으로 시스템을 구현하면 나중에 문제가 생기고, 문제를 고치는 데 많은 시간을 낭비하게 되고 최악의 경우에는 시스템을 처음부터 새로 구현해야 할 수 있습니다. 이해관계자와 검토를 효과적으로 그리고 빠르게 하고 피드백을 충분히 반영한 후 완성된 설계를 바탕으로 구현하면 버그 고치는 데 드는 비용이 더 적습니다. 관련 글은 아래 '함께 읽으면 좋은 글'을 참조해 주세요. 3. 여러 가지 설계 옵션을 파악하고, 각 옵션의 절충점을 이야기 해본다. 📌 추가: 주니어시절 가장 많이 하는 실수는 여러 옵션을 파악하지 않고 절충점을 따지지 않는 것입니다. 장기적으로 봤을 때 좋은 옵션이 아닐 수 있고, 추후에 설계나 코드 작성을 다시 해야 하는 경우가 생깁니다. 따라서 한 문제를 직면했을 때 가능한 여러가지 옵션을 간단하게 적어 보고 절충점을 따져 보는 것이 좋은 것 같습니다. 4. 가상 사용 케이스를 예상해 본다. 5. 시스템의 인터페이스를 잘 생각해 보고 좋은 인터페이스를 디자인해야 한다. 6. 최상의 솔루션을 채택하고 시스템 성능을 추정할 줄 아는 스킬은 중요하다. 7. 시스템을 설계하기 전 성능을 미리 예측해야 한다(예: back-of-envelope-calculations). (계산 관련 슬라이드 참고) 📌 추가: RPS와 Storage Utilization 계산법은 기본적으로 알아두는 게 좋습니다. 8. 진화할 수 있는 시스템에 미리 대응해 본다. 시스템이 10배 더 크게 확장되어도 잘 작동되어야 한다. 9. 기본 개발 구성 요소에 대해 잘 알고 있기. 예를 들어 코어 라이브러리, 기본 자료 구조, SSTables, protocol buffers, BigTables, MySQL, MapReduce. 그냥 기본 개념을 이해하는 게 아니라 어떻게 구현되는지 자세하게 알아야 한다. 📌 추가: 표면적으로 개념을 이해하는 것보다 깊게 파고들어 조금 더 많은 정보를 알게 되면 라지 스케일 시스템 개발, 운영 및 관리에 큰 도움이 됩니다. 슬라이드에는 간단하게 몇 가지 개념만 언급했지만, 궁금하신 분들은 관련 개념을 좀 더 자세하게 알아 보거나 라지 시스템 설계 관련 책을 읽어보면 좋을 것 같아요 (책 추천은 아래 '함께 읽으면 좋은 글'을 확인해 주세요). 10. 모든 요구 사항을 다 충족하는 시스템을 설계하려고 하지 말자. 11. Caching, parallelism을 통해 low latency 요구 사항 충족시키기. 12. Eventual Consistency와 Strong Consistency 모델 이해하기. 13. 데이터 엑세스 타임 이해하기. 14. 장애에 튼튼한 앱 구현하기 (Canary, 레플리케이션, load balancing). 15. 장애 발생시 전체 운영 중단 보다 부분 기능이 작동하는 것이 더 나은 유저 경험을 제공한다. 16. 충분한 모니터링, 로깅 그리고 디버깅 훅 추가하기. https://static.googleusercontent.com/media/research.google.com/en//people/jeff/stanford-295-talk.pdf 🪴 함께 읽으면 좋은 글 좋은 개발자가 알아야 할 버그 고치는데 드는 비용 https://careerly.co.kr/comments/75848 개발자가 꼭 봐야 할 책 - 데이터 중심 애플리케이션 설계 https://careerly.co.kr/comments/67004 초당 1억 건의 요청 S3 스케일의 스토리지 구축, 운영, 관리 https://careerly.co.kr/comments/88808 실력 향상을 위한 해외 유튜브 채널 10개 https://careerly.co.kr/comments/88786 개발자 성장에 도움 될 테크 블로그 https://careerly.co.kr/comments/87704

PowerPoint Presentation

googleusercontent.com

PowerPoint Presentation

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 9월 14일 오후 7:30

 • 

저장 174조회 8,085

댓글 0