728x90
반응형
SMALL

spartabootcamp 50

9_1.클라우드 및 Docker 개념 학습

학습내용클라우드 컴퓨팅DockerDocker Compose학습정리1. 클라우드 컴퓨팅개념인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어 등의 IT 리소스를 제공하는 기술컴퓨터의 저장 공간이나 프로그램을 개인 PC나 회사 서버가 아닌, 인터넷을 통해 제공되는 데이터 센터에서 이용하는 방식주요 특징온디맨드(On-Demand): 필요할 때만 IT 리소스를 사용할 수 있음확장성(Scalability): 사용량에 따라 자원을 쉽게 늘리거나 줄일 수 있음비용 절감(Cost Efficiency): 필요한 만큼만 사용하고 요금을 지불하는 구조 (예: 구독형 모델)접근성(Accessibility): 인터넷만 있으면 어디서든 사용 가능자동 업데이트(Auto Update): 최신 소프트웨어 및 보안 패치..

TIL 2025.02.17

8_5.MSA 애플리케이션 배포 자동화 CI/CD 구축 실습

학습내용CI/CD배포 전략Git Actions 실습학습정리1. CI/CDCI (Continuous Integration, 지속적 통합)개념개발자가 코드를 변경하면, 이를 자동으로 빌드 및 테스트 후 리포지토리에 병합코드 품질을 유지하면서 빠르게 개발 및 협업 가능주요 기능자동 빌드 자동 테스트코드 병합CD (Continuos Deployment, 지속적 배포)개념테스트 성공 시 자동으로 배포주요 기능자동 배포버전 관리환경별 배포주요도구GitHub Actions, GitLab CI/CD, Jenkins, CircleCI 등2. 배포전략Blue-Green 배포 전략개념두 개의 환경(Blue=현재 운영 중, Green=새 버전)을 동시에 유지Green(새 버전)으로 전체 트래픽 전환문제가 있으면 다시 Blue..

TIL 2025.02.17

8_4.MSA 운영 및 모니터링 구축 실습

학습내용Distributed Tracing (분산 추적)Log Aggregation (로그 중앙화)Metrics 수집 (Prometheus + Grafana)학습정리1. Distributed Tracing (분산 추적)여러 서비스 간 호출 흐름을 추적하여 성능 문제 해결Jaeger, Zipkin, OpenTelemetry 활용Zipkin 적용 실습서비스 간 호출 흐름을 Trace ID를 자동 전파하여 요청 흐름을 시각적으로 확인Docker 에서 사용 docker run -d -p 9411:9411 openzipkin/zipkin SpringBoot 에서 사용의존성 추가dependencies { implementation 'org.springframework.cloud:spring-cloud-..

TIL 2025.02.14

8_3.MSA 데이터 설계 전략 실습

학습내용데이터베이스 분리와 설계 전략데이터 동기화 전략학습정리1. 데이터베이스 분리와 설계 전략각 서비스가 독립적인 데이터베이스 스키마를 소유하고 데이터 독립성을 유지Database per Service 패턴서비스A └── DB-A (주문 데이터)서비스B └── DB-B (상품 데이터)서비스C └── DB-C (결제 데이터)각 시스템에 더욱 적합한 데이터베이스 선택가능 (MySQL, PostgreSQL, MongoDB, Redis 등등)장단점장점서비스 간의 데이터 독립성 보장각 서비스에 맞는 데이터베이스 유형 선택 가능각 서비스가 자신의 데이터 모델을 최적화 가능장애 격리단점데이터 중복 가능성서비스 간 데이터 일관성 유지 어려움운영 복잡도 증가2. 데이터 동기화 전략Eventual Consi..

TIL 2025.02.14

8_2.MSA DDD 설계 및 구현 실습

학습내용DDD설계Event Storming학습정리1. DDD (Domain-Driven Design) 설계소프트웨어 개발에서 도메인 중심으로 설계 방법핵심개념도메인 (Domain) : 소프트웨어가 해결하려는 특정 비즈니스 문제 영역을 의미도메인 모델 (Domain Model) : 도메인을 현실적으로 표현한 추상화된 개념의 집합Entity, ValueObject, Aggregate서브도메인 : 도메인의 하위 개념유비쿼터스 언어 (Ubiquitous Language) : 모든 구성원이 같은 의미로 이해 하도록 용어를 통일 ex) 주문 승인 -> approveOrder()MSA 와 DDD의 관계DDD의 바운디드 컨텍스트 개념이 MSA의 서비스 경계와 일치독립적인 컨텍스트를 서비스로 나눠서 확장성과 독립성을 보..

TIL 2025.02.11

8_1.MSA와 모놀리틱 아키텍처 비교와 MSA 장단점 및 도입 시 고려사항

학습내용MSA vs MonolithicMSA 도입시 고려사항MSA에서의 데이터 일관성 유지전략학습정리1. MSA vs MonolithicMSA : 각 기능이 독립적인 서비스로 분리 된 아키텍처장점독립적인 배포 및 확장다양한 기술 스택 사용 가능장애 격리단점복잡한 서비스 관리분산 시스템의 복잡성데이터 일관성 문제네트워크 지연 및 장애 가능성Monolithic : 모든 기능이 하나의 코드베이스에 통합 된 아키텍처장점단순한 개발 및 배표초기 개발 속도가 빠름디버깅 및 테스트가 비교적 쉬움단점확장성의 한계부분적인 업데이트가 어려움새로운 기술도입이 어려움확장성, 유지보수성, 복잡성 관점확장성 MSA : 수평적 확장, 필요한 서비스에만 독립적으로 확장하여 자원 효율Monolithic : 수직적 확장, 하드웨어 업그..

TIL 2025.02.10

7_5.성능 검증을 위한 NGrinder 설정과 실습

학습내용부하 테스트nGrinder 사용학습정리1. 부하 테스트주요목적동시 요청 처리 능력 확인주요 성능 지표 측정병목 구간 파악 및 개선동시 요청 처리량과 병목 구간 확인TPS (Transaction Per Second) : 초당 처리 할 수 있는 트랜잭션의 수응답 시간 (Response Time) : 요청이 서버에 전달 된 순간부터 응답 받기까지의 시간병목 구간 : 시스템 처리량이 급격히 감소하거나 응답 시간이 증가하는 특정 구간CPU 사용량 초과DB 잠금 대기 (데드락)네트워크 대역폭 한2. nGrinder 사용jdk 11 버전 셋팅https://github.com/naver/ngrinder/releases ngrinder war 파일 설치실행java -Djava.io.tmpdir={ngrinder..

TIL 2025.02.10

7_4.트랜잭션 예외 처리와 외부 API 연동 실습

학습내용트랜잭션과 외부 API 연동트랜잭션 내 외부 API 호출 처리 전략OpenFeign 사용학습정리1. 트랜잭션과 외부 API 연동트랜잭션과 외부 API 호출의 관계트랜잭션 내 API 호출네트워크 오류나, 외부 시스템 장애로 전체 트랜잭션이 실패 할 수 있음.API 호출 실패 시 데이터 정합성 문제API 호출 실패시 이미 수행된 데이터베이스 작업이 롤백 되지 않는다면 데이터 정합성이 깨질 수 있음.분산 트랜잭션 관리의 어려움데이터베이스 트랜잭션과 외부 API 호출을 하나의 트랜잭션으로 관리하기는 어렵다.보통 외부 API 호출 먼저 실행 후에 작업 진행 (트레이드오프)네티워크 오류 및 외부 시스템 장애 상황 고려네트워크 오류외부 시스템 장애타임아웃 및 예외 처리재시도 로직 적용2. 트랜잭션 내 외부 A..

TIL 2025.02.09

7_3.롤백 전략과 커밋 관리

학습내용롤백과 커밋트랜잭션 롤백 전략부분커밋 (entityManager)학습정리1.롤백과 커밋커밋트랜잭션 작업이 성공적으로 완료 된 경우 변경 사항을 영구적으로 저장원리 예제코드 @Transactional public void sellProduct(Long productId, int quantity) { // 상품 조회: 존재하지 않으면 예외 발생 Product product = productRepository.findById(productId) .orElseThrow(() -> new ServiceException(ServiceExceptionCode.NOT_FOUND_PRODUCT)); // 재고 차감: 엔티티 내 reduceStock 메서드를 활용 product..

TIL 2025.02.07

7_2.트랜잭션 전파 옵션과 DB Read/Write 분리

학습내용트랜잭션 전파 옵션DB Read/Write 분리학습정리1. 트랜잭션 전파 옵션스프링 프레임워크에서 트랜션이 메서드 간에 어떻게 이어져서(전파) 실행 되는지를 결정하는 설정옵션은 하나의 트랜잭션 경계 내에서 여러 비즈니스 로직을 실행할 때, 호출하는 메서드와 호출되는 메서드가 동일한 트랜잭션을 공유할지, 아니면 별도의 트랜잭션을 사용할지를 정합지정 방법해당 옵션을 적용시키기 위해서는 하위 해당메서드에 전파설정옵션의 종류REQUIRED (기본 값)기존 트랜잭션이 있으면 참여하고, 없으면 새 트랜잭션을 생성함.A트랜잭션이 B트랜잭션을 실행 할 경우 B트랜잭션이 롤백되면 A트랜잭션도 같이 롤백예시코드@Servicepublic class ServiceA { @Autowired private Servi..

TIL 2025.02.07
728x90
반응형
LIST