- [ 학습기록/독서 ][가상 면접 사례로 배우는 대규모 시스템 설계 기초] 1장 사용자 수에 따른 규모 확장성2024-11-21 16:00:44시스템 아키텍처를 보면 웹 서버와 DB 서버를 분리한 경우를 많이 볼 수 있다. 사용자 수가 늘어나면 여러 서버를 두게 되는데 이때 웹 서버와 DB 서버를 분리하면 각각 독립적으로 확장할 수 있기 때문이다.지금부터 시스템 규모 확장 방법을 알아보자. 수직 확장 vs. 수평 확장 (feat. 수평 확장을 선택해야 하는 이유)시스템 확장에는 크게 수직, 수평 확장 두 가지가 있다.수직 확장 (scale up) : 고사양 자원을 사용하여 서버의 성능을 높인다수평 확장 (scale out) : 더 많은 서버 자원을 추가하여 성능을 높인다수직 확장은 쉽게 성능을 향상시킬 수 있지만, 성능 향상에 한계가 있으며 자동 복구(= failover)나 다중화(= redundancy)를 할 수 없다는 단점이 있다. 즉, 아..
- [ 학습기록/독서 ][Good Code, Bad Code] 2장 추상화 계층2024-02-01 04:05:53추상화로 문제의 본질에 집중하기 미술에서 "추상화"는 실제 대상을 단순화하거나 왜곡하여 본질을 강조하는 예술적 기법을 의미한다. 소프트웨어에서 추상화도 이와 유사한 의미를 갖는다. 추상화는 구체적이고 특정한 것에서 벗어나 핵심적인 특징에 집중하는 것이다. 🧑🎨 : 구체적인 부분은 무시하고 사물의 본질만 다룰 거야 🧑💻 : 세부 사항은 무시하고 핵심 기능에 집중할 거야 커다란 문제를 여러 개의 하위 문제로 쪼개면 한 계층에서는 쉽게 이해할 수 있는 소수의 개념만을 다룬다. 전체적으로 봤을 땐 규모가 큰 문제지만 개별 문제는 상대적으로 그 복잡도가 낮아진다. 가독성 - 모든 세부사항을 이해하긴 어렵지만, 작게 분리된 개념을 이해하는 것은 상대적으로 쉽다. 모듈화 - 계층을 분리함으로써 구현 사항이 다른 ..
- [ 학습기록/독서 ][Good Code, Bad Code] 1장 코드 품질2024-01-24 14:51:47개발자로 진로를 정한 후에 처음으로 내돈내산 한 코딩 관련 서적이다! (전공 서적, 선물 제외) 정말 유명한 도서들이 많지만 굳이 이 책을 고른 이유는 학습한 내용을 프로젝트에 적용하고 싶기 때문이다. 개발 서적을 구매하더라도 현재 진행중인 프로젝트와 맞지 않는 경우, 배운 내용을 곧바로 써먹기 힘들어 흥미가 떨어지고 학습 내용도 휘발된다. 하지만 코드 품질은 어느 프로젝트에나 적용할 수 있기 때문에 나의 수요와 딱 맞아 떨어졌다. 회사의 운명을 결정 짓는 코드 품질 이 책을 읽기 전까진 막연하게 유지보수의 용이성 때문이라고 생각했다. 하지만 코드 품질로 인해 한 기업이 망할 수도 있다. 고품질의 코드를 작성하기 위해서는 많은 노력이 필요하다. 코드 품질을 위해 꼼꼼히 개발하다가 다른 경쟁사의 제품이 먼..