📗 개발자 책 읽기 20

객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향 | 조영호

2년 전에 읽었던 객사오를 다시 읽고, 책의 내용을 정리한 글입니다. [목차] 협력하는 객체들의 공동체 객체란 무엇일까 협력하는 사람들 협력 속에 사는 객체 메세지와 메서드 이상한 나라의 객체 객체와 소프트웨어 나라 객체와 상태 상태 캡술화 행동이 상태를 결정한다. 타입과 추상화 추상화를 통한 복잡성 극복 객체지향과 추상화 객체의 일반화와 특수화 역할, 책임, 협력 책임의 분류 대체 가능성 책임 주도 개발 책임과 메세지 다형성 유연하고 확장가능하고 재사용성이 높은 협력의 의미 객체 인터페이스 인터페이스와 구현의 분리 도메인 모델 1. 협력하는 객체들의 공동체 1) 객체란 무엇일까 ✔️ 객체란 현실 세계에 존재하는 사물에 대한 추상화이다. ✔ 객체 지향의 목표는 실세계를 모방하는 것이 아닌, 오히려 새로운..

육각형 개발자 - 시니어 개발자로 성장하기 위한 10가지 핵심 역량 | 최범균

최근에 진행하게 된 스터디에서 읽게된 책인데 편하게 잘 읽히고 기억하고 싶은 내용이 있어 기록으로 남겨보고자 합니다. 1장 들어가며 1) 개발이란 ✔️ 서비스 기업에서의 개발은 사용자에게 기능을 제공하는 일이다. ✔️ 고객의 요구를 파악하고 원하는 것을 충족하는 기능을 만드는 것이 개발이다. ✔️ 개발은 단순히 경력을 쌓거나 관심 있는 기술을 사용하기 위한 과정이 아니었다. ✔ 개발은 회사와 나에게 돈을 벌어주는 기능을 만드는 과정이기도 했다. 내가 만든 결과물은 직간접적으로 회사의 수익과 연결된다. ✔️ 회사 규모가 작을수록 개발 결과물이 회사가 생존하는 데 큰 영향을 준다. ✔️ 코딩과 구현 기술은 개발의 일부이지 개발의 전부는 아니다. ✔️ 개발자가(저자가) 성장한다는 느낌을 받지 못한 이유 중 하..

[System Design Interview] 12. 채팅 서버 시스템 설계하기

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 12장에서는 채팅시스템을 설계해 봅니다. 설계하고자 하는 요구사항은 아래와 같습니다. 응답지연이 낮은 1:1 채팅 그룹 채팅(최대 100명) 지원 다양한 단말 지원 (앱, 웹). 하나의 계정으로 여러 단말에 동시 접속 가능 사용자 접속상태 표시 채팅 이력 보관 [목차] 클라이언트 통신 채팅 서비스 개략적 설계 채팅 서비스의 데이터 저장소 메시지 흐름 과정 📌 01. 클라이언트 통신 클라이언트는 서로 직접 통신하지 않습니다. 각 클라이언트는 위에 나열한 모든 기능을 지원하는 "채팅 서비스"와 통신합니다. 채팅을 시작하려는 클라이언트는 네트워크 통신..

[System Design Interview] 10. 알림 서버 시스템 설계하기

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 10장에서는 알림 시스템을 설계합니다.알림시스템이란 모바일 푸시알림 뿐 아니라, SMS 메세지, 이메일 등을 포함합니다. [목차] 알림 유형별 지원 방안 개략적인 알림 시스템 설계 해보기 📌 01. 알림 유형별 지원방안 ios, aos, sms, 이메일을 이야기합니다. 1) IOS 푸시 알림 IOS 에서 푸시 알림을 보내기 위해서는 3가지 컴포넌트가 필요합니다. 알림제공자 (provider) 알림 요청(notification request)을 만들어 애플 푸시 알림 서비스(APNS) 로 보내는 주체입니다. 알림요청을 만들려면 다음과 같은 데이터가..

[System Design Interview] 07. 분산 시스템 환경에서의 고유 유일 ID 값 생성하기 (feat UUID)

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 7장에서는 분산환경에서의 유일 ID 생성기를 설계하는 방법에대해서 다룹니다. 보통 MySQL 같은 RDB 를 위주로 사용하는 저(?) 같은 사람은 유일 ID로 'auto_increment' 를 생각하는데 분산환경에서는 이러한 접근법이 통하지 않습니다. 분산환경에서 'auto_increment'가 통하지 않는 이유는, 보통 데이터베이스 1대만 사용하지 않는 것은 물론이고 여러 데이터베이스 서버를 쓰는 경우에는 지연시간을 낮추기가 무척 힘들기 때문이라고 합니다. 그렇기 때문에 이번 글에서 유일성이 보장되는 ID 설계방법을 정리해봅니다. [목차] 다중..

[System Design Interview] 06. ⚙️ 키-값 저장소 설계하기(2) - 분산 저장소 구현에 필요한 기술적 고려사항들

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 6 장에서는 비 관계형 데이터베이스라 불리우는, 키-값 저장소에 대해서 이야기하면서 아래 조건에 해당되는 키-값 저장소를 분산 시스템에서의 조건으로 설계해봅니다. 1. 키-값 쌍의 크기는 10KB 이하이다. 2. 큰 데이터를 저장할 수 있어야 한다. 3. 높은 가용성을 제공해야 한다. 따라서 시스템은 설사 장애가 있더라도 빨리 응답해야한다. 4. 높은 규모 확장성을 제공해야한다. 따라서 트래픽 양에 따라 자동적을 ㅗ서버 증설/삭제가 이루어져야 한다. 5. 데이터 일관성 수준은 조정이 가능해야 한다. 6. 응답 지연시간(latency)은 짧아야한다..

[System Design Interview] 06. ⚙️ 키-값 저장소 (비 관계형 데이터베이스) 설계하기(1) - CAP 이론 정리

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 6 장에서는 비 관계형 데이터베이스라 불리우는, 키-값 저장소에 대해서 이야기하면서 아래 조건에 해당되는 키-값 저장소를 분산 시스템에서의 조건으로 설계해봅니다. 1. 키-값 쌍의 크기는 10KB 이하이다. 2. 큰 데이터를 저장할 수 있어야 한다. 3. 높은 가용성을 제공해야 한다. 따라서 시스템은 설사 장애가 있더라도 빨리 응답해야한다. 4. 높은 규모 확장성을 제공해야한다. 따라서 트래픽 양에 따라 자동적으로 서버 증설/삭제가 이루어져야 한다. 5. 데이터 일관성 수준은 조정이 가능해야 한다. 6. 응답 지연시간(latency)은 짧아야한다..

[System Design Interview] 05. ⚙️ 안정해시란?

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 5장에서는 안정 해시 설계에 대한 내용을 다룹니다. 이번 글에서는, 안정 해시가 왜 필요하며 어떻게 동작하는지에 대해서 이야기합니다. [목차] 해시 키 재배치 문제 안정 해시란 안정 해시 동작 과정 안정 해시 장점 📌 01. 해시 키 재배치 문제 (rehash) 해시 키 재배치 문제란, 안정 해시로 인해 풀고자하는 문제입니다. 해시 키 재배치 문제가 일어나는 상황 예시 보통 N개의 서버가 있고, 아래와 같은 해시 함수를 사용하여 부하를 균등하게 나누고 있다고 가정합니다. 클라이언트에서는, 이렇게 계산된 serverIndex 값을 이용해 데이터에 ..

[System Design Interview] 04. 트래픽 처리율 제한 장치의 설계 (rate limiter)❗️❗️

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 4 장의 내용은, 다양한 시스템 입장에서의 트랙픽 처리율을 제한하는 설계에 대해서 이야기합니다. 책의 내용을 참고해서 정리하였기 때문에, 처리율 제한 장치의 자세한 구현 방법 보다는, 이것이 무엇이고 왜 사용해야하는지 처리율 제한 장치를 설계할 떄 어디에 두어야하는지, 어떤 목표를 가지고 알고리즘이 존재하는지 등에 대해서 이야기합니다. 처리율 제한 장치란 처리율 제한 장치의 위치 (클라이언트, 서버) 처리율 제한 알고리즘에 대해서 분산 서비스 환경에서 고려해야할 점 그 외에, 처리율 제한 시 고려해야할 것 들 [목차] 처리율 제한장치란 처리율 제..

[System Design Interview] 03. 시스템 설계 면접 공략법 ❗️

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 3장의 내용은 음.. 저자가 생각하는 시스템 설계 면접의 꿀팁입니다! 면접 팁..? [목차] 기술 면접을 보는 이유 엔지니어가 가져야 할 기술 면접 떄 해야할 것, 하지 말아야할 것 📌 3장 - 시스템 설계 면접 공략 법 저자와 저의 직무, 입장, 상황이 다르기 때문에 저자의 생각 중, 저에게 와닿는 글만 조금 바꿔서 가져왔습니다. 1. 시스템 설계 면접을 보는 이유 (기술 면접) 기술적인 측면만을 평가하는 자리가 아님 지원자가 협력에 적합한 사람인지 압박이 심한 상황도 잘 헤쳐 나갈 자질이 있는지 모호한 문제를 건설적으로 해결할 능력이 있는지 ..

반응형