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..
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..
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..
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..
RESTful Web Service 개발 - Spring Boot API 사용
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 Level3 단계의 REST API 구현을 위한 HATEOAS 적용 HATEOAS란? Hypermedia As the Engine Of Application State의 약자 현재 리소스와 연관된(호출 가능한) 자원 상태 정보를 제공 Level 0 REST API라고는 볼 수 없고 단순히 웹이나 특정한 네트워크를 통해서 컴퓨터 자원을 의미없이 전달해주는 단계 HTTP를 사용하지만 웹의 매커니즘을 사용하진 않음 모든 요청을 단일 엔드 포인트에 보낸다. Level 1 요청이 개별 리소스와 통신 약속 리소스(ex: uri)를 확보하고 해당 리소스에 응답함 Level 2 리소스와 HTTP 요청 메서드를 사용함 일반적인 프로젝트에서 구현하는..
RESTful Web Service 개발 - RESTful Service 기능 확장
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 유효성 체크를 위한 Validation API 사용 Validation API에는 두 가지 API가 존재한다. JDK에 포함된 Validation API Hibernate Validation API Hibernate는 자바에서 어플리케이션을 개발할 때 사용하는 API 자바의 객체와 데이터베이스의 엔티티를 매핑해주는 프레임워크 제공 이번 포스팅에서는 JDK에 포함된 Validation API만 사용해보자. Hibernate Validation API는 추후에 사용.. JDK에 포함된 Validation API 스프링부트 2.3 버전 이상 시에는 gradle에 validation을 따로 추가해줘야한다. build.gradle imple..
RESTful Web Service 개발 - User Service API 구현_2
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 HTTP Status Code 제어 GET Method와 POST Method OK 응답 코드 구분하기 UserController.java 수정 @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user) { User savedUser = service.save(user); URI location = ServletUriComponentsBuilder.fromCurrentRequest() .path("/{id}") .buildAndExpand(savedUser.getId()) // {id}에 값 지정 .toUri(); // uri 형태로 변환 retur..
RESTful Web Service 개발 - User Service API 구현_1
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 User Service API 구현 User 도메인 클래스 생성 User.java 생성 (com.example.restfulwebservice) @Data @AllArgsConstructor public class User { private Integer id; private String name; //private Date joinDate; Date 클래스 미사용 private LocalDateTime joinDate; } 강의에선 joinDate의 타입을 Date로 지정하였지만 나는 LocalDateTime으로 지정했다. UserDaoService.java 생성 Dao는 DB와 관련된 코드, Service는 비즈니스 로직을 작성..
RESTful Web Service 개발 - Spring Boot로 개발하는 RESTful Service
·
공부/Spring
Spring Boot로 개발하는 RESTful Service Spring Boot 개요 Spring Boot 스프링 기반의 단독 실행 가능한 어플리케이션을 개발하기 위한 플랫폼 상용화 가능한 수준의 어플리케이션을 만들 수 있음 spring 보다 spring boot를 사용하면 최소한의 설정만으로 플랫폼과 서드 파티 라이브러리 등을 사용할 수 있음 spring boot에 Tomcat, Jett나 Undertow 웹 어플리케이션 서버가 내장되어 있어 별도로 설치하지 않아도 된다. 실행에 필요한 많은 API들이 spring boot에 'starter'라는 컴포넌트를 통해 쉽게 사용할 수 있음. 실행에 필요한 다양한 설정을 auto configuration으로 자동으로 설정할 수 있다. 상용화와 관련된 통계, ..
RESTful Web Service 개발 - WEB Service 개발 방법 SOAP과 REST의 이해
·
공부/Spring
Spring Boot를 이용한 RESTful Web Services 개발 WEB Service 개발 방법 SOAP과 REST의 이해 Web Service & Web Application Web Service World Weid Web(WWW)를 통해 이기종 간의 통신 서비스를 제공한다. 네트워크를 통해 특정한 서버의 포트를 열어 놓고, 클라이언트의 요청을 받은 HTML, JSON, XML, images 등과 같은 웹 문서를 제공한다. 웹 서비스는 WWW, Internet, HTTP의 기술을 사용하는 웹을 통해 특정한 도메인의 문제를 해결하기 위한 Web Application을 뜻하기도 한다. 즉, 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용하기 위한 소프트웨어 시스템이다. Web Servic..