spring

    [Docker] Github Actions, Docker, AWS EC2 사용한 CI/CD (Spring Boot)

    0. 환경 Spring Boot 3.xx Java17 JDK corretto17 1. AWS EC2 인스턴스 생성 1) 이름 입력, Amazon Linux 선택 2) 키페어 생성 생성한 키페어는 따로 저장해서 보관해두자 3) 스토리지 구성 프리티어 기준 최대 용량인 30GB로 바꿔준다. 4) 인스턴스 생성 2. 보안그룹(인바운드) 규칙 편집 1) 인스턴스 ID를 클릭 2) 보안 탭 > 보안그룹 클릭 3) 인바운드 규칙 편집 클릭 4) 규칙 추가 다음 세 가지 규칙을 추가해준다. 꼭 MySQL일 필요는 없고, 자신이 사용하는 것에 맞게 선택해주면 된다. 없다면 사용자 지정 TCP를 선택해서 포트 범위를 직접 설정해준다 (ex. MongoDB라면 27017) 규칙을 모두 추가했으면 우측 하단의 '규칙 저장'..

    [Docker] AWS EC2 + Docker를 사용한 Spring Boot 프로젝트 배포

    0. 환경 Spring Boot 3.xx Java 17 JDK corretto17 1. 스프링 부트 프로젝트 1) TestController 생성 참고: build.gradle 의존성은 다음과 같다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.maria..

    [Spring] 의존성 주입(DI: Dependency Injection)

    의존성 주입, 왜 필요할까? 의존성 주입의 필요성을 이야기하기 위해, 객체지향 설계의 SOLID 원칙을 간단히 언급하고 넘어가겠다. SOLID 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. OCP(Open/Closed Principle): 개방-폐쇄 원칙 클래스는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. LSP(Liskov Substitution Principle): 리스코프 치환 원칙 하위 타입은 상위 타입을 대체할 수 있어야 한다. ISP(Interface Segregation Prinicple): 인터페이스 분리 원칙 인터페이스를 클라이언트의 용도와 목적에 맞게 작게 분리하여 제공해야 한다. DIP(Depe..

    [TIL - 20230622] K6 성능 테스트 시나리오 작성

    💻문제점 흠 여러 명이 후원하는 것에 대해 K6로 성능 테스트를 하려고 했는데 401 오류가 떴다. token이 필요한 API라 access_token을 요청 헤더에 넣어주긴 해야하는데... k6 테스트할 때에는 어떻게 하지? 우선 k6의 라이프 사이클에 대해 알아보면, 크게 4가지 라이프 사이클이 있다. 각 단계에 대한 설명은 여기를 참고 // 1. init code export function setup() { // 2. setup code } export default function (data) { // 3. VU code } export function teardown(data) { // 4. teardown code } 토큰은 3단계 시나리오를 실행하기 전에 2단계에서 설정을 해주어야 할 것 ..

    [Spring] Junit5 테스트 No tests found for given includes 오류 해결

    IntelliJ에서 Junit5 로 테스트를 하려고 했는데 오류가 발생했다. File > Settings > Build, Execution, Deployment > Build Tools > Gradle 다음 부분을 IntelliJ IDEA로 변경해주었다.

    [Spring] 아임포트 사용한 결제 구현 + JavaScript/React 코드

    1. 계정 생성 https://portone.io/korea/ko 2. 결제 연동 좌측 메뉴에서 결제 연동 탭으로 이동하자. 내 식별 코드를 클릭하면 결제창 연동 및 API 호출 시 필요한 연동 정보를 확인할 수 있다. 하단에서 결제대행사를 추가해주자. 필자는 카카오페이로 PG사를 선택하고 추가 해주었다. 다음과 같이 창이 뜨고, 변경한건 없다. 다음과 같이 등록된걸 확인할 수 있다. 3. JavaScript 코드 resources/templates/payment.html 을 생성했다. PG사 코드는 다음 링크에서 확인할 수 있다. 위에서 등록한 PG사의 코드를 사용해야 한다. https://developers.portone.io/docs/ko/tip/pg-2 결제하기 4. React 코드 import ..

    [TIL - 20230608] Webflux + Websocket + Kafka

    💻현재 상황 websocket과 reactive kafka를 사용 kafkaConfig @Configuration public class KafkaConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; @Value("${spring.kafka.consumer.group-id}") private String consumerGroupId; // group.id 값 추가 @Bean public ProducerFactory producerFactory() { Map configProps = new HashMap(); configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG..