본문 바로가기

더 나은 엔지니어가 되기 위해/읽고 쓰며 정리하기

(14)
클린 아키텍처 5부 - 아키텍처 이 글은 로버트 C. 마틴의 클린 아키텍처를 읽고 나름대로 중요하다고 생각한 부분만 정리한 글이다. 들어가며 이번 5부에서부터는 본격적으로 아키텍처에 대한 이야기가 나온다. 사실 대부분의 내용이 이미 잘 정리되어 인터넷 여기저기에 공유가 되어있다. (충분히 잘 정리된 글이 많아서 그런지, 굳이 내가 더 정리해야 하나 싶기도 하고... ) 여하튼, 일단 시작해본다.. 아키텍처란? 거두절미하고 아키텍처와 관련된 설명만 짤막하게 간추려 본다. 좋은 아키텍처는 시스템을 쉽게 (이해하고, 개발하며, 유지보수하고, 배포)할 수 있게 한다. 아키텍처는 시스템의 동작 여부 자체와는 거의 관련이 없다. 아키텍처는 소프트웨어를 유연하고 부드럽게 구조화한다. 좋은 아키텍트는 시스템의 핵심적인 요소(정책이라고 한다)를 식별하..
클린 아키텍처 4부 - 컴포넌트 이 글은 로버트 C. 마틴의 클린 아키텍처를 읽고 나름대로 중요하다고 생각한 부분만 정리한 글이다. 들어가며 이전 부서에서 SOLID 원칙이 벽과 방에 벽돌을 배치하는 방법을 알려준다면, 컴포넌트 원칙은 빌딩에 방을 배치하는 방법을 알려준다. 큰 빌딩과 마찬가지로, 대규모 소프트웨어 시스템은 작은 컴포넌트들로 만들어진다. 컴포넌트 컴포넌트는 배포 단위다. 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위다. 라고, 책에 써져있기는 한데. 솔직히 말해서 이게 무슨 말이지 싶었다. 배포 단위면 컨테이너 이미지 정도를 말하는 건가? 솔직히 말해 나는 와 닿지 않아, CBD에 관한 글을 참고하며 이해했다. 내가 생각한 컴포넌트는 "사용 가능한 단위"다. 즉 실행 가능한 소스 코드 뭉치고, 이를 사용할 수 있..
클린 아키텍처 3부 - 설계 원칙 이 글은 로버트 C. 마틴의 클린 아키텍처를 읽고 나름대로 중요하다고 생각한 부분만 정리한 글이다. 들어가며 3부 설계 원칙에서는 SOLID 원칙에 대해서 다룬다. SOLID 원칙은 과거 몇 년 동안 수차례 여기저기서 언급되고, 이미 너무나 유명한 원칙들이기 때문에, 책에서는 SOLID 원칙이 무엇인지 처음부터 친절히 설명해주지는 않는다. 다만, 각 SOLID 원칙을 하나씩 다시 되짚어 보며 각 원칙이 지니는 핵심 의미를 다시 살펴본다. SOLID 원칙을 처음 정립한 사람에게, 수 년 뒤에 다시 듣는 SOLID 원칙의 핵심 의미라... 꽤나 의미 있지 않을까? 밥 아저씨가 말하는 SOLID 원칙의 전반적인 의미는 다음과 같다. SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 클래스..
클린 아키텍처 2부 - 프로그래밍 패러다임 이 글은 로버트 C. 마틴의 클린 아키텍처를 읽고 나름대로 중요하다고 생각한 부분만 정리한 글이다. 들어가며 책의 1부에는 클린 아키텍처가 왜 중요한 지, 무엇을 추구하는지 등에 대해 나오는데 굳이 적지는 않겠다. 클린 아키텍처 책을 찾는 사람이라면, 이미 그 중요성이나 필요성을 느끼고 온 사람이지 않을까 싶어서다. 여기서는 내가 생각한 핵심만 정리해보려고 한다. 개요 예나 지금이나, 프로그래밍 언어의 기본적 기능은 달라지지 않았다. 1946년 앨런 튜닝이 최초의 코드를 작성할 때 사용한 소프트웨어 규칙과 지금의 소프트웨어 규칙은 조금도 다르지 않다. 프로그램은 여전히 순차, 분기, 반복, 참조로 구성된다. 프로그래밍 언어의 기본적 기능은 달라지지 않았지만, 이 기능을 어떻게 사용할 것인가에 대한 생각은..
책 리팩토링을 통해 보는 좋은 코드 원칙 회사에서 특정 로직 개발을 맡게 되면서, 요즘 들어 파이썬과 개발에 관심이 많이 생겼다. 좋은 코드란 무엇인지 자꾸 생각하게 되고, 코드 하나하나 짤 때마다 고민, 신중하게 된다. 이런 내게, 사내 다른 동료 분이 개발 관련 서적을 읽어보라고 권해주셨는데, 마틴 파울러의 "리팩토링" 이라는 책이다. 개발 서적에서 유명한 책인데, 최근 개정 2판이 나와 베타 리더로 책을 받으셨다고 한다. 개정되었어도 뭔가 고전 서적답게 표지부터 읽기 싫게 생겼다. 그래도 유명한 책이니 만큼, 또 좋은 코드에 대한 공부를 하고 싶어 퇴근 후 짬짬이 읽게 되었다. 이 포스팅은 이 책을 읽고 내게 필요한 내용만 정리한 글이다. 책에서는 몇 가지 리팩토링 과정을 500페이지의 분량으로 담아내는데, 이 글에서 나는 모든 내용을 정..
쿠버네티스(kubernetes) 기본 개념 정리 조대협님 블로그의 쿠버네티스 시리즈 를 공부하며 정리한 글입니다. 자세한 내용은 생략하고 핵심만 담았습니다. 1. 쿠버네티스란? 컨테이너 운영환경에서, 컨테이너들을 적절하게 매니징하는 솔루션 예를 들어, 서비스 요청이 많아지는 경우 이에 대한 부하를 줄이기 위해 노드 수를 동적으로 늘림. 대표적으로 다음과 같은 역할을 함. 스케쥴링 컨테이너별 자원 최적화 적절한 위치(클러스터 내 노드)에 배포 정상/비정상 상태 체크 및 재기동 컨테이너 리소스 모니터링 컨테이너 동적으로 삭제 관리 이러한 일들을 자동화하게끔 하는 솔루션임. 2. 기본 개념 이해 1) 구조와 오브젝트 클러스터 구조 마스터 / 머신 노드가 존재. 마스터는 하나, 머신은 여러개 쿠버네티스 오브젝트 기본적으로 오브젝트와 컨트롤러로 구성 오브젝트 ..