All Categories

algorithms (1)
architectures (6)
development (6)
system-operations (4)

Binary search로 삽입 위치 찾기 - 그림으로 쉽게 이해하기

정렬된 배열에서 특정 숫자를 찾는 "찾기 문제" 또는 특정 숫자가 들어갈 위치를 찾는 "삽입 문제"가 주어진다면, 일단 binary search부터 생각해보는 것이 좋다. 찾기 문제는 말그대로 원하는 숫자가 나올 때까지 찾으면 되기 때문에 직관적으로 이해하기 쉽다. 반면, 삽입 문제는 배열에 없는 숫자의 위치를 찾아야 할 수도 있기 때문에 다소 헷갈리는 편이다. 코드를 외우는 것도 방법이다. 그런데, 세상엔 binary search 말고도 외울 것 천지다. 시각적으로 원리를 이해한 뒤에 손가락이 자동으로 코드를 짤 수 있도록 해두자.

Aggregate란 무엇인가 도대체! - DDD aggregate의 기초 쉽게 이해하기

DDD에서는 aggregate라는 용어가 자주 등장한다. DDD의 다양한 개념들을 이해하기 위해서는 aggregate에 대한 이해가 선행되어야 하는데, 보통 DDD 자료들에서는 aggregate에 대한 설명이 중후반부에 등장한다. DDD 초보자도 쉽게 이해할 수 있도록 aggregate를 겉핥기해보자.

Event와 command의 차이점 쉽게 이해하기 - Events vs commands in EDA

Event Driven Architecture(EDA)를 시스템에 적용할 때는 거창한 이름 때문에 마치 모든 것을 event로 처리해야 할 것만 같다. 반은 맞고 반은 틀리다. Command라는 개념을 event와 분리하여 생각할 필요가 있다. Event와 command가 도대체 뭐가 다른지 간단히 정리해보자.

CQRS 개념 초간단 정리 - Understanding CQRS pattern

개발을 하다보면 CQRS라는 용어를 자주 만나게 된다. 특히 이벤트 기반 아키텍처나 대용량 트래픽 처리와 관련된 주제에서는 항상 빠지지 않고 등장하는 단골 메뉴다. 예제와 함께 CQRS 패턴의 정의, 장단점, 그리고 적용 방법 등을 최대한 간단하게 정리해보자.

... and 3 more posts

자가 위임, 자가 캡슐화 - DDD에서 생성자를 정의하는 방법

DDD에서는 생성자를 정의할 때 자가 위임(self-delegation)과 자가 캡슐화(self-encapsulation)를 사용할 것을 권장한다. 이 두 가지 개념을 통해 어떻게 생성자를 정의해야 하는지 알아보자.

FastAPI에서 사용자가 연결을 끊으면 어떻게 될까? - Middleware disconnection check 문제

FastAPI에서 middleware를 사용하면 클라이언트가 연결을 끊었다는 사실을 알 수 없게 된다. 사용자의 disconnection이 요청 취소를 의미하는 경우, 이는 여러가지 문제로 이어질 수 있다. 연결이 끊겼다는 것을 어떻게 감지해야 할까?

초보 개발자 클릭 금지! Python으로 PostgreSQL DB 개인정보 암호화하기 1편 - 문제정의와 요구사항 분석

AI와 빅데이터가 모든 것의 중심이 되어가는 세상에서 개인정보 보호는 매우 중요하다. 데이터 수집 과정에서 개인정보가 노출되면 심각한 범죄로 이어질 수도 있다. DB 개인정보 암호화를 하려면 어떤 것들을 고려해야 할까? 간단한 예시와 함께 DB 개인정보 암호화를 달성하기 위한 방법들을 살펴보자.

... and 3 more posts

Git-sync로 kubernetes 환경에 앱 배포 자동화하기 - 초간단 CI/CD 구축

Git-sync를 사용하면 github에 코드를 올릴 때마다 자동으로 앱이 업데이트되도록 만들 수 있다. 코드를 수정할 때마다 직접 배포하지 말고, git-sync를 통해 kubernetes 환경에 간단하게 CI/CD 환경을 구성해보자.

Kubernetes 1.23 버전의 최후 - Ubuntu kubernetes apt install 에러

2024년 3월 초, docker가 익숙해서 끝까지 버티고 있던 kubernetes v1.23.x 개발 환경 설치에 돌연 문제가 생겼다. Ubuntu에서 kubeadm, kubelet, kubectl 등을 apt로 설치할 수 없게 된 것이다. 원인과 해결 방법에 대해 알아보자.

Kubernetes에서 memory가 부족해지면 어떻게 될까? - Kubernetes Out-Of-Memory(OOM) kill and eviction

Kubernetes의 주요 역할 중 하나는 클러스터의 자원을 효율적으로 관리해주는 것이다. Kubernetes는 클러스터에 자원이 부족한 상황에서 자원을 재분배하기도 한다. 쉽게 말해서, 어떤 앱들은 잘 동작하고 있다가도 외부의 압력으로 인해 강제로 종료될 수 있다는 의미다. 그렇다면, kubernetes는 어떤 기준으로 pod들을 종료시키는 것일까? 가장 흔히 접하게 되는 Out-Of-Memory(OOM) 현상을 위주로 살펴보자.

... and 1 more post