요즘 개발자를 위한 시스템 설계 수업 15,16장 - 면접 준비, 컨닝노트?
15장 - 시스템 설계 면접을 준비하는 팁 15.1. 시스팀 설계 면접을 준비하는 방법 - 이론적인 지식 바탕으로 실제 경험을 쌓기 + 전달을 정확히 할 수 있도록 커뮤니케이션 능력 키우기 1. 기본 개념 확실히 익히기확장성 - 수직 확장성, 수평 확장성, 로드 밸런싱, 분산 시스템 개념에 대해 알아두기.데이터베이스 - SQL, NoSQL 차이 파악, 인덱싱, 샤딩, 데이터베이스 레플리카에 대한 이해. 관계형 데이터베이스, 비관계형 데이터베이스를 언제 사용할지 구분캐싱 - 캐싱 전략들, 캐시 삭제 정책(뭐더라?.. 빼낸다 그런 단어였는데)일관성 가용성 : CAP 정리, PACELC 정리(CAP를 상황별로 조금 더 세부적으로 나눈 정리였음), 강한 일관성, 최종 일관성 개념 이해, CAP 에 상충되는 개념..
더보기
요즘 개발자를 위한 시스템 설계 수업 10장 - 근접 서비스
1. 근접서비스란?- 사용자 위치 데이터를 기반으로 사용자 경험을 제공하고 운영을 더 효율적으로 만들어준다. 실제 사용사례들은 승차 공유 (우버, 리프트), 지역 검색 및 추천 서비스 (옐프, 포스퀘어), 소셜 네트워킹 및 데이팅 앱 (틴더, 범블), 음식 배달 서비스 (도어대시, 그럽허브), 네비게이션 및 지도 서비스 (구글 맵, 웨이즈), 피트니스 및 건강 추적 앱(스트라바, 핏비트) 등 많은 곳에서 쓰이고 있다. 우리나라도 관련 분야를 찾아보면 많은 서비스 들이 있을 듯하다. 2. 기능적 요구사항과 비기능적 요구사항- 책에서는 내 주변 음식점 찾기와 주문하기라는 단순화된 서비스를 가정하고 요구사항을 정의한다. 기능적 요구사항은 아래와 같다.- 사용자는 자신의 위치를 기반으로 음식점 검색이 가능...
더보기
요즘 개발자를 위한 시스템 설계 수업 chap. 01, 02, 03
chap01.시스템 설계의 정의 소프트웨어 시스템은 특정 작업이나 일련의 작업을 수행하려고 함께 동작하는 컴포넌트를 말함.분산 소프트웨어 시스템은 각 구성요소가 소프트웨어 시스템적 특징을 가지며 모든 구성요소는 어떤 특정한 공통 목표를 위해 네트워크를 통해 연결되어 있음. 시스템 설계는 소프트웨어 시스템과 분산 소프트웨어 시스템의 아키텍쳐, 컴포넌트 모듈, 인터페이스 및 상호작용을 정의 하며 기능적,비기능적 요구사항을 채우는 과정이다. -> 요구사항을 시스템구조, 구현, 유지보수 방식을 설명하는 청사진인나 계획으로 변환하는 작업이다. 시스템 설계를 진행하는 일반적인 과정1. 요구사항 분석2. 상위 수준의 아키텍쳐 설계 - 시스템 아키텍쳐, 데이터 흐름, 확장성, 장애 허용 시스템 등을 고려하여 설계3. ..
더보기