Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Users Microservice-1-1
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice 개요 APIs 기능 URI(API Gateway 사용 시) URI(API Gateway 미사용 시) HTTP Method 사용자 정보 등록 /user-service/users /users POST 전체 사용자 조회 /user-service/users /users GET 사용자 정보, 주문 내역 조회 /user-service/users/{user_id} /users/{user_id} GET 작동 상태 확인 /user-service/users/health_check /users/health_check GET 환영 메시지 /user-service/users/welcome /users/welcome GET U..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_E-commerce 애플리케이션
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) E-commerce 애플리케이션 너무 복잡한 애플리케이션을 만들진 못하고 간단하게 세 가지의 마이크로 서비스를 만들어보자. CATALOG-SERVICE USER-SERVICE ORDER-SERVICE 전체적인 애플리케이션 구성 전체적인 애플리케이션 구성 구성요소 설명 Git Repository 마이크로서비스 소스 관리 및 프로파일 관리 Config Server Git 저장소에 등록된 프로파일 정보 및 설정 정보 Eureka Server 마이크로서비스 등록 및 검색 API Gateway Server 마이크로서비스 부하 분산 및 서비스 라우팅 Microservices 회원 MS, 주문 MS, 상품(카테고리) MS Queuing System..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_7
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Load Balancer Eureka 설정 dependencies 확인(gradle) - 세 개 프로젝트에 모두 적용 implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' application.yml 설정 - 세 개 프로젝트에 모두 적용 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka 아래 코드는 apigateway-service 프로..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_6
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway-Logging Filter Global Filter와 비슷한 Logginfg Filter를 작성해보자. 그럼 이 프로젝트에 적용된 필터는 3개이다. Custom Filter, Global Filter, Logging Filter. 이 필터들의 순서는 다음과 같다. Global Filter PRE Custom Filter PRE Logging Filter PRE Logging Filter POST Custom Filter POST Global Filter POST LoggingFilter.java 생성 @Override public GatewayFilter apply(Config config) { G..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_5
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Custom Filter 적용 CustomFilter.java 생성 @Component @Slf4j public class CustomFilter extends AbstractGatewayFilterFactory { public CustomFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { // Custom Pre Filter return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); ServerHttpRe..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_4
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Filter 적용(Java 소스) 자바 코드로 필터 설정을 하기 위해 application.yml에 설정했던 route 관련 설정을 주석처리한다. spring: application: name: apigateway-service # cloud: # gateway: # routes: # - id: first-service # uri: http://localhost:8081/ # predicates: # - Path=/first-service/** # - id: second-service # uri: http://localhost:8082/ # predicates: # - Path=/second-s..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_3
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 나는 Netflix Zuul.... 강의 때 임의로 Spring Cloud Gateway를 사용했었는데....이렇게 따로 강의가 있었다니...! 복습하는 셈치고 간략하게 쑥쑥 적어야겠다. Spring Cloud Gateway - 프로젝트 생성 Spring Boot 버전은 2.7.8로 설정했다. application.yml server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_2 (gateway 사용)
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Netflix Zuul - Filter 적용 강의에서는 Netflix Zuul을 사용해서 필터링했지만 나는 spring cloud gateway를 사용했다. LogginFilter.java 생성 @Component // 일반적인 빈 형태 @Slf4j // jackson을 통한 logger 사용 public class LoggingFilter extends AbstractGatewayFilterFactory { @Data public static class Config { private String baseMessage; private boolean preLogger; private boolean postLogger; } public L..
[백준] 2018_수들의 합5 - JAVA
·
알고리즘/알고리즘 유형
백준_2018 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 투 포인터 투 포인터의 기초적인 설명은 아래 링크 참고. [백준] 2018_수들의 합5 - JAVA 백준_2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타 devhan.tistory.com 이번 문제도 저번 문제(주몽)와 마찬가지로 정렬을 이용하면 더욱 간단하게 풀 수 있다. 그래서 정렬 후 투 포인터를 ..
[백준] 1940_주몽 - JAVA
·
알고리즘/알고리즘 유형
백준_1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 투 포인터 투 포인터에 대한 설명은 아래 링크를 참고 [백준] 2018_수들의 합5 - JAVA 백준_2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타 devhan.tistory.com 이 문제는 두 재료의 번호의 합을 구하고 크기를 비교하는 문제라 받..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_1
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) API Gateway란? API Gateway Service는 사용자가 설정한 Routing 설정에 따라 각 endpoint로 client를 대신해서 요청하고, 응답을 받으면 다시 client에게 전달해주는 역할을 한다. 시스템의 내부 구조는 숨기고 외부의 요청에 대해 적절한 형태로 가공해서 응답할 수 있는 장점이 있다. API Gateway Service가 없을 시에 client에서는 microservice를 호출할 때, 클라이언트 쪽에서 endpoint를 설정하게 된다. 그런데 만약 microservice의 설정이 변경되어 endpoint가 변경되거나, 새로운 microservice가 추가되어 이에 해당하는 endpoint를 cli..
[백준] 2018_수들의 합5 - JAVA
·
알고리즘/알고리즘 유형
백준_2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 투 포인터 투 포인터는 말 그대로 2개의 포인터이다. 이 두 개의 포인터를 이용해서 알고리즘의 시간 복잡도를 최적화할 수 있다. 예제에 나온대로 N의 값이 15라 할때 연속된 자연수의 합은 15(자기 자신), 7+8, 4+5+6, 1+2+3+4+5 이렇게 4개이다. 연속된 자연수의 합을 구하는 문제이므로 시작 인덱스와 종료 인덱스를 지정하여 연속된 수의 범위를 표현한다. 투 포인터의 이동 원칙 sum > N : sum -= s..
[백준] 10986_나머지 합 - JAVA
·
알고리즘/알고리즘 유형
나머지 합 이 문제도 구간 합 배열을 이용해야 한다. 구간 합 배열의 설명은 아래 링크로 이동하면 볼 수 있다. [백준] 11659_구간 합 구하기4 - JAVA 구간 합 구간 합은 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 알고리즘이다. 구간 합을 이용하려면 합 배열을 구해야 한다. 합 배열 만들기 S[i] = S[i-1] + A[i] 인덱스 0 1 2 3 A 10 10 10 1 devhan.tistory.com 배열의 연속 구간의 합을 구하려면 (A+B) % C로 구할 수 있다. 예제를 참고해서 풀어보자. 예제의 배열 {1, 2, 3, 1, 2} 중에 2와 3의 값을 대입해 보자. (2+3) % 3은 2이다. 또, 모듈러 연산은 분배법칙이 가능하다. 그러므로 ((2 % 3) + (3 % ..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Service Discovery
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Netflix Eureka Service Discovery 마이크로서비스의 정보(위치 등)를 등록할 수 있음 외부의 요청이나 서비스가 마이크로서비스의 정보를 검색하기 위해 사용됨 Eureka의 구성 요소 Service Discovery : 외부에서 마이크로서비스를 찾아주는 기능 Service Registry : 각각의 서비스가 자신의 위치 정보를 특정 서버에 등록하는 작업 Eureka Service Discovery - 프로젝트 생성 강의에선 Maven으로 진행했지만 나는 Gradle을 선택했다. Dependencies에서 Spring Cloud Discovery > Eureka Server를 선택한다. 참고로 ..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Microservice와 Spring Cloud의 소개_2
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Monolithic VS Microservice Monolithic 어플리케이션 개발에 필요한 모든 요소를 하나의 소프트웨어에 포함시켜 개발하는 방법 DB 로직, 비즈니스 로직, 프론트엔드 등 모든 서비스들이 유기적으로 연결되어있고, 배포 시에도 서로 의존성을 가진 채 패키징된다. Microservice 어플리케이션을 구성하는 각각의 구성 요소 및 서비스의 내용을 분리해서 개발하고 운영하는 방식이다. 유지보수 및 변경 사항을 적용하는데 더 유리하다. Monolith Architecture 모든 업무 로직이 하나의 어플리케이션 형태로 패키징 어플리케이션에서 사용하는 데이터가 한 곳에서 참조되어 서비스 되는 형태 어느 한 서비스를 수정 및..