본문 바로가기

기타25

[MSA] 마이크로서비스 통신 방식 성능프로세스 내 호출의 성능은 프로세스 간 호출의 성능과 기본적으로 차이가 있다. 프로세스 내 호출을 할 때, 기본 컴파일러와 런타임은 호출의 영향을 줄이려고 마치 처음에 호출이 없었던 것처럼 전체 호스트 최적화를 수행할 수 있다. 하지만 프로세스 간 호출에서는 이러한 최적화가 불가능하며, 패킷을 전송해야한다. 메서드에 매개변수를 전달할 때 보통 전달할 데이터 구조체는 이동되지 않는다. 대신 메모리 위치에 대한 포인터를 전달할 가능성이 높다. 객체나 데이터 구조를 다른 메서드에 전달할 때 데이터를 복사하려고 더 많은 메모리를 할당할 필요는 없다. 반면에 네트워크를 통해 마이크로서비스 간 호출을 할 때 데이터는 실제로 네트워크를 통해 전솔될 수 있는 특정 형태로 직렬화돼야 한다. 그런 다음에 데이터는 전송.. 2025. 4. 22.
도커 이미지 정리 스크립트 저장용 #!/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.