📚 개발 도서
-
파이썬으로 살펴보는 아키텍처 패턴 총정리📚 개발 도서 2024. 1. 1. 22:24
1장. 도메인 모델링을 지원하는 아키텍처 구축 1장에서는 도메인 모델 패턴으로 비즈니스 계층을 만드는 방법을 보여준다. 대부분 개발자가 새로운 시스템을 설계하라는 요청을 받으면 즉시 데이터베이스 스키마를 그리기 시작하고 그다음 객체 모델을 생각한다. 여기서부터 모든 것이 잘못되기 시작한다. 대신 먼저 행동하고 저장에 대한 요구 사항은 행동에 맞춰 정해져야 한다. 나는 페이지의 새로운 혁신 내용을 재미있게 읽었다. 기존 시스템에서, 모든 배송과 도착 날짜를 추적하여 창고로 배송 중인 상품을 실제 재고로 간주에 창고에 존재하는 제품처럼 취급할 수 있다는 이야기. 이는 재고가 없다고 표시되는 상품이 감소하여 더 많은 상품을 팔 수 있게 된다. 즉, 이 비즈니스는 돈을 절약하게 된다. 이런 시스템을 구현하려면 ..
-
[MongoDB] Sharded Cluster📚 개발 도서 2023. 9. 11. 09:20
ReplicaSet 배포형태에 이어 분산을 위한 배포 형태인 Sharded Cluster에 대해 알아보자. 용어부터 정리하면, 샤딩은 하나의 큰 데이터를 여러 장비에 걸쳐서 데이터를 분할하는 과정을 의미. 분할된 데이터셋의 모음을 샤드라고 한다. 분산이 되는 기준을 샤드키라고 하는데, 샤드키는 컬렉션의 필드에 생성된 인덱스를 이용해서 활성화한다. 각각 샤드는 레플리카셋으로도 관리 된다. "복제: for HA, 샤딩: for 분산처리(scale-out)" 장점 용량의 한계를 극복할 수 있다. 데이터 규모와 부하가 크더라도 처리량이 좋다. 고가용성을 보장한다. 하드웨어에 대한 제약을 해결할 수 있다. 단점 관리가 비교적 복잡하다. Replica Set과 비교해서 대체적으로 쿼리가 느리다. 요청이 들어왔을 때..
-
[클린코드] 오류 처리📚 개발 도서/클린코드 2023. 7. 18. 00:34
깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 오류처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라고 부르기 어렵다. 오류 코드보다 예외를 사용하라 (3장 함수에도 나왔다. 오류 코드보다 예외를 사용하라! → 오류 코드 대신 예외(ex. try/catch)를 사용하면 오류 처리 코드가 원래 코드에서 분리되어 코드가 깔끔해진다.) [클린코드] 함수 3-2 함수가 읽기 쉽고 이해하기 쉬운 이유는 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파 ayoung0073.tistory.com 논리가 오류 처리 코드와 뒤섞이지 않는다. (코드품질 굳) Try-Catch-..
-
[클린코드] 객체와 자료구조📚 개발 도서/클린코드 2023. 7. 16. 17:35
변수를 비공개로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 그렇다면 왜 수많은 프로그래머가 조회함수와 설정함수를 당연하게 공개하여 비공개 변수를 외부에 노출할 것인가?라는 질문으로 시작한다. 자료 추상화 변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다. 구현을 감추기 위해서는 추상화가 필요하다. 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 자료/객체 비대칭 객체 vs 자료구조? 객체..
-
[핵심만 콕! 쿠버네티스] 쿠버네티스 첫만남 / 도커와 비교한 쿠버네티스 명령어 총정리(feat. kubectl)📚 개발 도서/핵심만 콕! 쿠버네티스 2023. 7. 15. 22:59
이번 글에서는 도커 기초 에 이어 쿠버네티스 클러스터와 대화하는 방법을 알아보자! 쿠버네티스 기본/고급 명령어를 정리해볼 예정이다. 쿠버네티스 클러스터를 컨트롤하기 위해 클라이언트 툴인 kubectl 명령툴을 사용한다. 쿠버네티스 API 서버는 REST API로 통신을 한다. 기본 명령 기본적으로 도커 컨테이너와 마찬가지로 컨테이너의 실행과 삭제, 조회 등을 할 수 있다. 컨테이너 실행 # 이름의 컨테이너를 를 이용하여 생성하라 kubectl run --image 도커 명령 비교 docker run 컨테이너 조회 # 컨테이너 확인 kubectl get pod NAME READY STATUS RESTARTS AGE mynginx 1/1 Running 0 90s # 특정 pod 상태 정보를 더 자세히 보고 ..
-
[핵심만 콕! 쿠버네티스] 도커 기초 (도커 소개 및 명령어 총정리)📚 개발 도서/핵심만 콕! 쿠버네티스 2023. 7. 12. 23:53
도커 소개 도커는 가상실행 환경을 제공해주는 오픈소스 플랫폼이다. 이 가상실행 환경을 컨테이너라고 부른다. 도커 플랫폼이 설치된 곳이라면 컨테이너로 묶인 애플리케이션을 어디서든 실행할 수 있는 장점을 가진다. 클라우드 컴퓨팅으로 흐름이 넘어오면서, 서비스를 빠르게 배포할 수 있는 방법을 도커가 제공해준다. 한번 만들어진 이미지는 온프레미스 서버든 클라우드 서버든 상관없이 언제나 동일하게 동작하기 때문에, 온프레미스와 클라우드 간 간극을 줄여줬다. 표준화 이식성: 도커 플랫폼 위에서 실행된다면 동일한 실행 환경으로 프로세스를 작동시킬 수 있다. 가볍다: 도커는 실행되는 애플리케이션별로 커널을 공유해서, 다른 가상화 제품에 비해 가볍다. 강한 보안: 컨테이너라는 고립된 환경에서 실행되므로 보안에 유리하다. ..
-
[클린코드] 시스템📚 개발 도서/클린코드 2023. 7. 1. 16:18
“복잡성은 죽음이다. 개발자에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다." - 레이 오지, 마이크로소프트 최고 기술 책임자 이 장에서는 높은 추상화 수준, 즉 시스템 수준에서도 깨끗함을 유지하는 방법을 살펴본다. 시스템 제작과 시스템 사용을 분리하라 construction과 use는 아주 다르다. 소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 ‘연결’하는) 준비 과정과 (준비 과정 이후에 이어지는) 런타임 로직을 분리해야 한다. 설정 논리는 일반 실행 논리와 분리해야 모듈성이 높아진다. public Service getService() { if (service == null) service = new MyServiceImpl(...); return serv..
-
[클린코드] 클래스📚 개발 도서/클린코드 2023. 6. 15. 21:56
코드의 표현력에 아무리 신경 쓸지라도 좀 더 차원 높은 단계까지 신경쓰지 않으면 깨끗한 코드를 얻기 어렵다. 클래스 체계 추상화 단계는 순차적으로 내려간다. 그래서 프로그램은 신문 기사처럼 읽힌다. 캡슐화 : 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 클래스는 작아야 한다 클래스는 작아야 한다. 함수는 물리적인 행 수로 측정했지만, 클래스는 클래스가 맡은 책임을 센다. 클래스 이름은 해당 클래스 책임을 기술해야 한다. 간결한 이름이 떠오르지 않는다면, 필경 클래스 크기가 너무 커서 그렇다. 클래스 이름에 Processor, Manager, Super 같은 모호한 단어가 포함되어있다면, 클래스 책임이 너무 낳아서다. 단일 책임 원칙 (Single Responsibility Principle, SRP..