반응형
제육's 휘발성 코딩
반응형
[MSA] Spring Cloud - Zuul vs API Gateway
🔷 Spring/MSA 2022. 10. 30. 19:55

API Gateway란 API Gateway란 여러 마이크로 서비스들과 통신하기 위한 단일 지점(진입로)으로 모든 요청에 대해서 일괄적으로 처리해준다. Gateway는 인증 및 권한 체크, 응답 캐싱, 부하 분산 등의 역할을 수행한다. Spring Cloud 에서 MSA 간 통신 RestTemplate RestTemplate restTemplate = new RestTemplate(); restTemplate.getForObejct("url", Domain.class, 200); RestTemplate 을 통해 MSA url을 기반으로 통신하는 방법이다. Feign Client @FeignClient("test") public interface TestClient { @RequestMapping(meth..

[MSA] Spring Cloud - Eureka Service Discovery 설정하기
🔷 Spring/MSA 2022. 10. 25. 22:22

Eureka Server 생성 Discovery Service 역할을 하는 서버 프로젝트를 생성하자. IntelliJ에서 Spring Initializr를 사용하여 프로젝트를 생성하자. Spring Cloud와 Spring Boot 버전이 서로 다르면 오류가 발생하므로 버전 확인을 하자. Eureka Server 라이브러리를 의존성으로 주입해주자. pom.xml 4.0.0 org.springframework.boot spring-boot-starter-parent 2.7.5 com.example discoveryservice 0.0.1-SNAPSHOT discoveryservice discoveryservice 1.8 2021.0.4 org.springframework.cloud spring-cloud-..

[MSA] Spring Cloud란? 등장 배경 및 구성도
🔷 Spring/MSA 2022. 10. 24. 02:10

Spring Cloud 란? https://spring.io/projects/spring-cloud Spring Cloud Spring Cloud is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project. Go here to r spring.io 스프링 클라우드란 프록시, 서비스 검색, 서비스간 호출 등 여러 공통 패턴을 분산 시스템에서 동작할 수 있도록 ..

article thumbnail
[Advanced] 스프링 - 쓰레드 로컬
🔷 Spring/Advanced 2022. 6. 15. 20:38

쓰레드 로컬 이전 포스팅에서 로그 추적기에서 트랜잭션 ID 동기화를 위해 TraceId 를 파라미터로 넘기도록 구현했었다. 동기화는 정상 동작했지만, 모든 메서드에 파라미터를 추가해야하는 문제가 발생했다. 이번엔 프로토타입이 아닌 정식 버전으로 개발해보자. LogTrace package hello.advanced.trace.logtrace; import hello.advanced.trace.TraceStatus; public interface LogTrace { TraceStatus begin(String message); void end(TraceStatus status); void exception(TraceStatus status, Exception e); } 다양한 구현체로 변경할 수 있도록 인터..

article thumbnail
[Advanced] 스프링 로그 추적기 구현
🔷 Spring/Advanced 2022. 6. 15. 01:58

프로젝트 생성 https://start.spring.io/ 에서 다음과 같이 프로젝트를 생성하자. 상품을 주문하는 프로세스로 가정하고, Controller , Service, Repository로 이어지는 흐름을 단순하게 만들어보자. OrderRepositoryV0 package hello.advanced.app.v0; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @Repository @RequiredArgsConstructor public class OrderRepositoryV0 { public void save(String itemId) { // 저장 로직 if (itemId.equal..

article thumbnail
[Database2] 데이터 접근 기술 - MyBatis
🔷 Spring/Database 2022. 6. 13. 21:19

MyBatis Mybatis는 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이다. 기본적으로 JdbcTemplate이 제공하는 기능을 대부분 제공하며, XML과 동적 쿼리를 매우 편리하게 작성할 수 있다는 장점이 있다. MyBatis vs JdbcTemplate JdbcTemplate과 MyBatis의 코드 차이를 알아보자. JdbcTemplate String sql = "update item " + "set item_name=:itemName, price=:price, quantity=:quantity " + "where id=:id"; MyBatis -SQL update item set item_name=#{itemName}, price=#{price}, quantity=#{..

article thumbnail
[Database2] 데이터 접근 기술 - 테스트
🔷 Spring/Database 2022. 6. 13. 19:26

데이터베이스 연동 테스트 데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 것이 필요하다. 테스트 단에서 데이터베이스 접근을 위한 별도의 설정을 위해 db2test 라는 이름으로 새로운 스키마를 생성하자. Item 테이블 생성 drop table if exists item CASCADE; create table item ( id bigint generated by default as identity, item_name varchar(10), price integer, quantity integer, primary key (id) ); 새로운 테이블을 사용하기 때문에 다시 Item 테이블을 생성하자. application.properties (test) spr..

article thumbnail
[Database2] 데이터 접근 기술 - JdbcTemplate
🔷 Spring/Database 2022. 6. 13. 17:06

JdbcTemplate JDBC를 편리하게 사용할 수 있도록 도와주는 JdbcTemplate에 대해서 알아보자. 장점 JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있으며, 별도의 복잡한 설정 없이 바로 사용할 수 있다. 템플릿 콜백 패턴을 사용해서 JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해준다. 커넥션 획득 및 종료 , statement 준비 및 실행, 결과 반복 루프 작업, 커넥션 동기화, 스프링 예외 변환 등 단점 동적 SQL을 해결하기 어렵다. JdbcTemplate 설정 build.gradle //JdbcTemplate 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' //..

반응형
반응형