본문 바로가기

분류 전체보기264

도커 이미지 정리 스크립트 저장용 #!/bin/bash# 색상 설정RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'BLUE='\033[0;34m'NC='\033[0m' # 색상 초기화echo -e "${BLUE}=======================================================${NC}"echo -e "${BLUE} Docker 시스템 정리 - 디스크 공간 확보 ${NC}"echo -e "${BLUE}=======================================================${NC}"# 중지된 컨테이너 모두 삭제echo -e "${YELLOW}중지된 모든 컨테이너 삭제 중...${NC}"docker container prune -f.. 2025. 4. 20.
[MSA] 마이크로서비스 아키텍처를 위한 DDD 간단 정리 보편 언어: 모든 팀 구성원(개발자, 기획자, 현업 전문가 등)이 혼동 없이 동일한 의미로 사용하는, 의도적으로 만들어진 공유된 어휘 체계애그리거트: 일관된 데이터 변경(원자성)을 위해, 하나의 단위로 묶어 관리하는 관련 객체 그룹경계 콘텍스트: 특정 모델과 그 보편 언어가 일관되게 유효한, 명시적인 경계 2025. 4. 17.
[MSA] 내용 결합, 공통 결합이란? 그리고 차이점 내용 결합과 공통 결합은 MSA에서 피해야할 높은 수준의 결합도를 나타낸다. 두 가지 모두 서비스 간의 독립성을 해치게 된다. 1. 내용 결합(Content Coupling)정의한 서비스가 다른 서비스의 내부 구현 세부 정보에 직접 접근하거나 수정하는 경우. 매우 높은 수준의 결합이며, 가장 피해야할 유형. 마이크로서비스에서의 예시A서비스가 B서비스의 내부 DB에 직접 쿼리를 실행A서비스가 B서비스의 내부 코드나 private 함수를 직접 호출A서비스가 B서비스의 내부 파일 시스템에 직접 접근문제점캡슐화 위반독립적 배포 불가변경의 어려움마이크로서비스의 핵심 원칙힌 서비스 자율성(Autonomy)와 경계 컨텍스트(Bounded Context)를 정면으로 위반하므로 절대적으로 피해야한다. 2. 공통 결합(C.. 2025. 4. 17.
[MSA] 시간적 결합 코드 중심적 관점에서 시간적 결합은 순전히 동시에 발생하기 때문에 함께 엮이는 상황이다.시간적 결합은 분산 시스템의 맥락에서는 미묘하게 다른 의미를 갖는데, 하나의 마이크로서비스가 작업을 완료하기 위해 동시간에 어떤 작업을 수행하는 다른 마이크로서비스가 필요한 상황을 나타낸다. 작업을 완료하려면 두 마이크로서비스가 동시에 작동하고 서로 통신할 수 있어야한다. 따라서 A서비스가 B서비스에 대한 동기식 HTTP 호출을 수행하는 시점에 B서비스는 가동돼 수행 가능한 상태여야한다.어떤 이유로 A서비스가 B서비스가 연결할 수 없게 된다면 작업은 실패하게 된다. 또한 A서비스는 차단되어 B서비스의 응답을 기다려야하므로 잠재적으로 리소스 경합과 관련된 문제를 유발할 수 있다. 시간적 결합이 항상 나쁜 것은 아니지만,.. 2025. 4. 17.
[Kotlin] Generics - in과 out 확실하게 알기 Generics의 in과 out은 코틀린이 타입 시스템을 더 안전하게 만들기 위한 장치다.그런데 in과 out 키워드는 처음 배울 때 확실하게 알기 어렵다(나만 그랬나?). 그래서 정리해본다.1. 시작하기에 앞서, Generics는 왜 쓸까?먼저 제네릭이 왜 필요한지 짚고 넘어가야한다. 제네릭은 타입을 마치 함수의 파라미터처럼 사용하는 기능이다. 이렇게 하면 다양한 타입에서 작동하면서도 타입 안정성을 보장하는 재사용 가능한 코드를 만들 수 있다.예를 들어, List은 문자열만 담는 리스트, List는 정수만 담는 리스트가 된다.List라는 하나의 틀을 만들어 놓고, 필요할 때마다 T 자리에 원하는 타입을 넣어 쓰는 것이다. 이렇게 하면 잘못된 타입이 들어가는 걸 컴파일 시점에 미리 막을 수 있어 안전하다.. 2025. 4. 16.