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 모든 업무 로직이 하나의 어플리케이션 형태로 패키징 어플리케이션에서 사용하는 데이터가 한 곳에서 참조되어 서비스 되는 형태 어느 한 서비스를 수정 및..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Microservice와 Spring Cloud의 소개_1
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 소프트웨어 아키텍처 Software Architecture 발전 과정 1960 ~ 1980년대 - 메인 프레임 하드웨어 중심. 하드웨어의 사양이나 성격에 맞춰서 서비스 구축 하드웨어가 고가였기 때문에 서비스의 기능을 수정하기 어려웠음 Fragile : 깨지기 쉬운 시스템 1990 ~ 2000년대 - 분산 Robust, Distributed. 시스템이 안정화 됨 분산 덕분에 서비스의 변화가 발생하더라도 안전성있고 성능이 높은 서비스를 유지 가능 2010 ~ 현재 Resilient(탄력적), Cloud Native 시스템은 로컬 → 클라우드로 이전 확장성과 안전성이 더욱 강화. 지속적인 개선 및 변경 사항이 생겨도 시스템을 탄력적으로 운영..
RESTful Web Service 개발 - Java Persistence API 사용_3
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 게시물 관리를 위한 Post Entity 추가와 초기 데이터 생성 사용자가 작성할 수 있는 게시물 관련 Entity를 만들어보자. 사용자는 여러 개의 게시글을 작성할 수 있으며, 아예 작성을 하지 않을 수도 있다. 반대로 게시글은 사용자가 없으면 생성되지 못한다. 즉 User가 필수 데이터, Post가 옵셔널 데이터라고 생각하면 된다. Post.java 생성 ... public class Post { @Id @GeneratedValue private Integer id; private String description; @ManyToOne(fetch = FetchType.LAZY) @JsonIgnore private Users us..
[백준] 11660_구간 합 구하기5 - JAVA
·
알고리즘/알고리즘 유형
2차원 배열 구간 합 일단 1차원 배열의 구간 합부터 이해해야한다. [백준] 11659_구간 합 구하기4 - JAVA 구간 합 구간 합은 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 알고리즘이다. 구간 합을 이용하려면 합 배열을 구해야 한다. 합 배열 만들기 S[i] = S[i-1] + A[i] 인덱스 0 1 2 3 A 10 10 10 1 devhan.tistory.com 2차원 배열의 구간 합은 어려운 거 같으면서도 이해하면 쉽다. 일단 문제의 예시로 설명해보자. 위 원본 배열을 A라 하자. 원본 배열의 크기가 +1 된 이유는 구간 합 배열의 크기와 똑같이 만들어주기 위함이다. 이 A의 합 배열(S)을 채워보자. for문의 시작 인덱스는 0이 아닌 1이다. index 계산 시 0부터 시작이면..
[백준] 11659_구간 합 구하기4 - JAVA
·
알고리즘/알고리즘 유형
구간 합 구간 합은 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 알고리즘이다. 구간 합을 이용하려면 합 배열을 구해야 한다. 합 배열 만들기 S[i] = S[i-1] + A[i] 인덱스 0 1 2 3 A 10 10 10 10 S 10 20 30 40 이런 식으로 합 배열을 만든다. S 배열에 값을 계산해서 저장하는 for문의 변수 초기화는 1부터 시작해야한다. 구간 합 공식 S[j] - S[i-1] 1부터 3까지의 구간 합을 구한다치면 S[3] - S[1-1]이 된다. 40-10 = 30이 된다. A배열의 값이 모두 10이라 뭔가 헷갈릴 수 있으니 다른 배열로도 계산해보자. 인덱스 0 1 2 3 A 10 16 3 49 S 10 26 29 78 위 배열에서도 1부터 3까지의 합을 구해보자. 78..
RESTful Web Service 개발 - Java Persistence API 사용_2
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 Spring Data JPA를 이용한 Entity 설정과 초기 데이터 생성 application.yml jpa 로그를 볼 수 있도록 설정을 해주자. 난 설정되어있었다. spring: jpa: show-sql: true User.java @Entity public class User { @Id @GeneratedValue private Integer id; ... } @Entity : 이 어노테이션을 붙여주면 해당 클래스의 이름으로 클래스 필드에 있는 정보들을 기반으로 데이터베이스 테이블을 생성한다. @Id : 레코드를 구분하기 위한 기본키 설정. 여기선 id가 기본키가 된다. @GeneratedValue : 자동 생성되는 키 값이란..
RESTful Web Service 개발 - Java Persistence API 사용_1
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 Java Persistence API 개요 JPA Java Persistence API의 약자 자바 ORM 기술에 대한 API 표준 명세 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스이기 때문에 클래스 내부에는 메서드 선언 밖에 없고 기능을 사용하려면 구현체를 만들어야한다. EntityManager를 통해 CRUD 처리 Spring Data JPA Spring Module JPA를 추상화한 Responsitory 인터페이스 제공 JPA 사용을 위한 Dependecy 추가와 설정 JPA 라이브러리 추가 build.gradle 스프링 프로젝트를 생성했을 때 dependecies에서 JPA와 h2를 추가했다면 buil..