가상 면접 사례로 배우는 대규모 시스템 설계 기초 (알렉스 쉬, 2021) 독후감
재미있다. 다양한 대규모 시스템 설계 문제가 나온다. 면접이라는 포맷을 써서 핵심에 집중이 잘 된다. 요구사항을 정리하는 질문 답변에서도 배울 게 있었다.
재미있다. 다양한 대규모 시스템 설계 문제가 나온다. 면접이라는 포맷을 써서 핵심에 집중이 잘 된다. 요구사항을 정리하는 질문 답변에서도 배울 게 있었다.
“변수 이름을 어떻게 지어야 하지?” ChatGPT와 Copilot이 도와주고 있지만 여전히 어려운 문제다. 규모가 어느 정도 되는 Codebase에서 작업을 한다면 이름 짓기 이전에 넘어야 할 산이 하나 더 있다. “어디에 코드를 넣어야 할까?”
내 블로그에 HTTPS 프로토콜 지원이 필요할까? 개인 정보를 취급하지 않는다. 쿨한 척 댓글도 없애서 말 그대로 정적 사이트가 됐다. 블로깅 도구도 정적 사이트 생성기인 Jekyll을 사용하고 있다.
선을 긋고 왼쪽에는 이론이라 적고 오른쪽에는 실무라고 적는다. 내가 읽은 책을 나열해 보면 왼쪽보다는 오른쪽에 많이 치우쳐져 있다. 균형을 잡고 싶어서 이론에 더 가까운 소프트웨어 아키텍처 책을 집어 들었다. 책 제목에 101이 붙어 있어서 더 안심이 된다.
작년에 결심한 2024년
Elixir가 아닌 다른 프로그래밍 언어를 사용해 협업하다 보면 그리운 라이브러리 중 하나가 Credo이다. code review에서 정적 분석기가 거를 수 있는 것들을 수정 요청할 때 그립다. 잔소리는 기계가 해야 한다. 개인 프로젝트를 할 때는 코드 일관성이 제대로 안 지켜지고...
Elixir, OTP, Phoenix로 웹 애플리케이션을 짜는 걸 설명하는 책이다. 어떤 애플리케이션을 만들까? 번갈아 가며 섬의 위치를 추측하는 Island Game이라는 게임을 만든다. 책 한 권을 할애해 처음부터 끝까지 짜면서 설명하기 적당한 예제다.
Elixir에서 Behaviour란 용어가 나온다. Erlang의 어깨 위에 올라서서 만든 언어라 Erlang에서 사용하는 Bahaviour라는 용어를 그대로 가져온 것 같다. C++의 pure virtual function만 정의한 클래스 혹은 C#의 interface와 비슷한 ...
Task 모듈부터 시작해 GenServer, GenStage, Flow, Broadway까지 간다. 동시성 데이터 처리에 관련된 유용한 라이브러리를 망라하고 있다. 마지막으로 나오는 Broadway가 막판 대장이다. 여러 stage를 GenStage로 꾸역꾸역 구현해서 사용하고 있...
’테스트’라고 하면 ’유닛 테스트(Unit Testing)’를 떠올린다. 좀 더 해상도를 높여서 테스트 코드를 상상하면 ’예제 기반 테스트(Example-based Testing)’을 떠올린다.
속성 기반 테스트 프레임워크인 PropEr, PropCheck를 사용하면 ’Cache 예제코드를 테스트하며 맛보는 Stateful Property-Based Testing’ 예제를 손쉽게 병렬 테스트로 바꿀 수 있다.
속성 기반 테스트(Property-Based Testing)라 하면 Stateless Property를 사용한 테스트를 연상한다. 상태가 없는(stateless) 속성이다. 즉 입력에 대한 결과가 항상 같아야 한다.
’예제로 보는 Property-Based Testing (feat. Kata09: Back to the Checkout)’ 글에서 ’Kata09: Back to the Checkout’ 코드를 짜고 속성 기반 테스트(Property-Based Testing)를 했다. 짠 테스트를 ...
’속성 기반 테스트(Property-based Testing)와 속성 정의에 도움을 주는 네 가지 방법’ 글에서 속성 기반 테스트를 간략히 살펴봤다. 대략 감은 잡겠지만 속성 기반 테스트를 짜라고 하면 막막하다. 이럴 때는 좋은 예제가 도움을 줄 수 있다.
속성 기반 테스트(Property-based Testing)에 대해 들어본 적이 있다. SUT(System Under Test)에 대한 속성(Property)을 정의한다. 테스트 프레임워크 도움을 받아서 테스트를 자동화한다. 하지만 유닛 테스트(Unit Testing)를 처음 접했...
다시 C++을 만지게 됐다. 책장에 꽂혀 있던 ’Effective Modern C++’ 책을 다시 읽었다. 예전에 읽었던 것 같은데, 새롭고 놀랐다. 나보다 더 깊이 생각한다. 여기까지 설명하겠지 하면서 읽다 보면 예상한 것보다 한 발짝 더 깊이 들어가서 설명한다. 스콧 마이어스 ...
Pragmatic Bookshelf 블랙 프라이데이 세일 기간에 눈에 띄어서 샀다. 얇게 RDBMS(Relational database management system), Key–value database, Columnar, Document-oriented databases, Gr...
단위 테스트(Unit Testing)에 관한 책을 한 권만 꼽는다면 이 책을 꼽고 싶다. 늦게 알아서 억울한 책이다. 예제가 C#이지만 자신이 사용하는 언어와 상관없이 읽으면 도움이 되는 내용들로 가득하다.
데이터베이스에 값을 저장하고 로드하는 건 스텁(Stub)이나 목(Mock)으로 대체해야 할까? 그냥 직접 사용해도 되는 걸까? 달빛조각사 게임에서는 데이터베이스에 목을 사용하지 않고 테스트를 했다. 통합 테스트(Integration testing) 레벨로 테스트를 짰다. 그러면 통...
테스트 대상이 되는 SUT(System Under Test)와 협력자(Collaborator) 사이에 일어나는 상호 작용을 검사할 때, 테스트 대역(Test double)을 사용한다. 테스트 대역은 크게 목(Mock)과 스텁(Stub)으로 나눌 수 있다. ’단위 테스트 (블라디미르...