반응형

전체 글 106

Mysql 기반 선착순 쿠폰 발급 기능 개발 (3)

이제부터 만든 서비스를 호출하기 위해 presentation Layer 설계를 해보자. 그전까지는 다른곳에서 가져다 쓸 mycoupon-core 에서 작업하였고, 지금은 mycore-api에서 작업을 진행하겠다. CouponIssueController // mycouponapi/controller/CouponIssueController.java package com.example.mycouponapi.controller; import com.example.mycouponapi.dto.CouponIssueRequestDto; import com.example.mycouponapi.dto.CouponIssueResponseDto; import com.example.mycouponapi.service.Coup..

5. Telemetry

Telemetry란? 마이크로서비스는 분산 환경에서 운영되며, 다수의 마이크로서비스가 동작하게 됩니다. 이러한 특징 때문에 장애, 운영 이관 등의 실행중인 프로세스에서 발생하는 이벤트의 흐름을 보고 원인을 파악하는데 오랜 시간이 소모 됩니다. 각 서비스별로 발생하는 이슈들을 Tracing 하기 위하여 Monitoring, Logging, Tracer 도구를 활용하여 지속적이고 자동으로 이슈에 대응할 수 있도록 환경을 구성합니다. - MSA school 여기서 key point 는 Monitoring Logging Tracer 로 볼 수 있다. Main functions of Telemetry Monitoring 인프라 및 응용 프로그램 서비스 모니터링을 위해서는 매트릭 수집, 로깅 및 추적 이라는 세가지..

세션/MSA 2024.04.16

Mysql 기반 선착순 쿠폰 발급 기능 개발 (2)

쿠폰 엔터티 발급 기능 이제부터 본격적으로 coupon 엔터티에 기능을 추가해보자. 서비스에 기능을 추가할 수 있지만, DDD 관점에서 설정을 한다면 도메인과 관련된 기능은 도메인에 넣어주는 것이 좋다. Coupon // mycouponcore/model/Coupon.java package com.example.mycouponcore.model; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import java.time.LocalDateTime; @Entity @Builder @NoArgsConst..

Mysql 기반 선착순 쿠폰 발급 기능 개발 (1)

mysql, redis 설정 먼저 mysql과 redis를 도커 컨테이너로 띄우기 위해 docker-compose를 작성해 주자. //docker-compose.yml version: '3.7' services: redis: container_name: coupon-redis image: redis:7.2-alpine command: redis-server --port 6380 labels: - "name=redis" - "mode=standalone" ports: - 6380:6380 mysql: container_name: coupon-mysql image: ubuntu/mysql:edge command: mysqld --character-set-server=utf8mb4 --collation-ser..

2. 프로젝트 환경 설정

멀티모듈 구성 좀 더 효율적인 관리를 위해 멀티모듈로 구성해 볼 예정이다. dependecy는 필요할 때 그때 추가하기로 한다. create를 누르면 다음과 같이 프로젝트가 생성될 것이다. 제일 바깥의 디렉토리는 src 폴더가 필요없으니 삭제해주도록 하자. 루트 디렉토리(mycoupon)에서 우클릭 > new > Module… 선택하면 새로운 모듈을 만들 수 있다. 위의 타이틀에 New Module을 꼭 확인하자!! 아까와 동일하게 dependency를 나중에 넣어줄 예정이기에 그냥 바로 craete를 해주자. 총 3가지 모듈로 구성될 것이다. mycoupon-api mycoupon-consumer mycoupon-core 보통 멀티모듈로 구성할 때는 공통으로 가져다 쓰는 모듈을 core로 두고, 나머지..

1. 요구사항 분석 및 도메인 설계

선착순 쿠폰 발급 시스템이란? 한정된 수량의 쿠폰을 먼저 신청한 사용자에게 제공하는 시스템을 말합니다. 선착순 쿠폰 이벤트 요구사항 특정 기간(ex) 2024-04-01 오후 3시 ~ 2024-04-07 오후 8시)에 발급해야 한다. 한 유저당 한번의 쿠폰이 발급되어야 한다. 선착순 쿠폰의 최대 발급 수량이 정해져 있다. 기능 정의서 쿠폰 발급 기능 쿠폰 발급 기간 검증 쿠폰 발급 수량 검증 쿠폰 전체 발급 수량 중복 발급 요청 검증 쿠폰 발급 쿠폰 발급 수량 증가 쿠폰 발급 기록 저장 coupon_id user_id 구현 목표 정확한 발급 수량을 제어합니다.(동시성 이슈 처리) 많은 트레픽이 들어와도 안정적으로 높은 처리량 도메인 크게 2가지 도메인이 있다. 쿠폰 쿠폰 발행 로직에 집중하기 위해 핵심 ..

[Effective Java]아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라.

아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라. 클래스의 인스턴스를 생성하는 방법은 일반적으로 (1) public 생성자를 사용하거나 (2) 정적 팩터리 메서드를 사용하는 방법이 있다. public 생성자를 통해 인스턴스 생성 public class Person { public Person() { } } @DisplayName("생성자를 통해서 인스턴스를 생성한다.") @Test void createInstanceUsingConstructor() { // given String className = "effective_java.item1.Person"; // when Person person = new Person(); // then assertEquals(className,person.getCl..

Java/서적 2024.04.02

4. Backing Service

Backing Service란? backing services는 앱이 실행중에 네트워크를 통해 사용하는 모든 서비스를 말합니다. 예로는 데이터 저장소(예: MySQL 또는 CouchDB), 메시징/대기열 시스템(예: RabbitMQ 또는 Beanstalkd), 아웃바운드 이메일용 SMTP 서비스(예: Postfix) 및 캐싱 시스템(예: Memcached, Redis)이 있습니다. 여기서 key point 는 앱이 실행중에 네트워크를 통해 사용하는 모든 서비스 로 볼 수 있다. 쉽게 backup(지원요청)을 위한 컴퍼넌트라고 생각하면 된다. Microservices for Backing Service 이벤트드리븐 기반의 마이크로서비스(Event-Driven Microservices)에서 Backing S..

세션/MSA 2024.04.02

2. Service Mesh

Service Mesh란? 서비스 메시는 애플리케이션의 서비스 간 모든 통신을 처리하는 소프트웨어 계층입니다. 이 계층은 컨테이너화된 마이크로서비스로 구성됩니다. … 서비스 메시는 서비스 간 연결을 관리하기 위해 모니터링, 로깅, 추적, 트래픽 제어와 같은 새로운 기능을 제공합니다. 이러한 기능은 각 서비스의 코드와 독립적이므로 네트워크 경계를 넘어 여러 서비스 관리 시스템에서 작동할 수 있습니다. - aws 여기서 key point 는 서비스 레벨에서의 모든 통신을 처리 모니터링, 로깅, 트래픽 제어 서비스의 코드와 독립적(종속성 완화) 로 볼 수 있다. Why Use Service Mesh? 마이크로서비스 아키텍처를 사용하면 개발자는 전체 재배포 없이도 각 앱 서비스를 변경할 수 있습니다. 다른 아키..

세션/MSA 2024.03.29

1. API Gateway

API Gateway란? API Gateway(게이트웨이)는 API 서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고, API에 대한 인증과 인가 기능에서 메시지에 따라서 여러 서버로 라우팅하는 고급기능까지 많은 기능을 담당할 수 있습니다. - MSA school 여기서 key point 는 엔드포인트를 단일화 인증과 인가 기능 라우팅 로 볼 수 있다. 다양한 사용자(Mobile, Brower, Other Service..)들이 External Gateway를 통해서 service에 접근하는 것을 볼 수 있다. 보통 MSA에서 API Gateway를 얘기하면 External Gateway를 말한다. Why Use an API Gateway? 다음과 같은 이유로 API Gateway를 사..

세션/MSA 2024.03.29
반응형