728x90
반응형
SMALL

분류 전체보기 219

[MSA] Part 9. UserService (Create User)

UserService의 API 중 Create 부분을 만들어보자. VO 우선, vo 패키지를 하나 추가하고 그 패키지 안에서 CreateUser.java 파일을 생성한다. 이 클래스는 User를 생성하고자 하는 사용자의 요청을 받을 때 Payload를 담는 클래스다. package com.example.tistoryuserservice.vo; import lombok.Data; @Data public class CreateUser { private String email; private String name; private String password; } 위처럼 작성하면 되는데 좀 더 완성도를 높여보자. 각 필드 별 Validation을 걸 수 있다. 예를 들면 최소한의 길이, 최대 길이, NotNul..

MSA 2023.10.11

[JPA]: Part 2. Hibernate 정의와 JPA와 Hibernate의 차이점

Hibernate는 자바 기반의 오픈소스 프레임워크로 객체 지향된 도메인 모델과 RDB 사이의 연결을 제공한다. Hibernate가 자바 애플리케이션에서 데이터베이스 관련 프로그래밍을 개발자들이 Java Objects를 통해 할 수 있도록 도와준다. 복잡한 SQL 쿼리 대신. Hibernate의 핵심 특징은 다음과 같다. 1. Object-Relational Mapping (ORM): Hibernate의 핵심 목적은 객체 지향적 언어와 RDB 사이의 갭에 연결 다리를 놓는것이다. 그리고 그를 위해 양방향으로 자바 오브젝트들과 데이터베이스 테이블들 사이를 매핑해준다. 2. Persistence: Hibernate는 RDB에 또는 RDB로부터 자바 오브젝트들을 저장하거나 읽어오는 메커니즘을 제공한다. Hib..

[JPA] Part 1. JPA(Java Persistence API)란 ?

JPA는 Java Persistence API의 약자로, RDB와 Java Objects 간 데이터 접근, 관리, 지속성에 대한 명세라고 생각하면 된다. 좀 더 간단하게는 Relational Database와 Java application이 상호작용하게 도움을 주는 녀석이라고 생각하자. JPA의 핵심은 다음과 같다. 1. Object-Relational Mapping (ORM): JPA는 자바 오브젝트들과 데이터베이스 테이블을 양방향으로 매핑해 주는 방법을 제공한다. 이는 개발자들에게 코드상에서 자바 오브젝트들을 가지고 데이터베이스의 데이터들을 핸들링할 수 있게 한다. 2. Entity Classes: JPA는 엔티티 클래스를 정의할 수 있게 해주는데 엔티티 클래스라 함은 데이터베이스에 저장하고 싶은 데..

[MSA] Part 8. H2 Database 연동 그리고 'ddl-auto' property

H2 Database를 연동해서 좀 더 그럴싸한 서비스를 구현해 보자. H2 Database는 Java로 만들어진 오픈 소스 형태의 RDBMS다. H2 Dependency Maven Repository 사이트에 들어가서 H2라고 검색해보자. https://mvnrepository.com 검색하면 가장 상단에 H2 Database Engine 이라는 dependency가 노출된다. 거기에 가장 최신 버전을 클릭해서 dependency를 복사한 후 pom.xml 파일에 추가하자. com.h2database h2 2.2.224 runtime 한 가지 변경사항이 있는데 scope를 runtime으로 변경해 주자. test로 하게 되면 실제로 서비스를 실행할 때 H2 Database를 사용할 수 없기 때문에 ru..

MSA 2023.10.11

[MSA] Part 7. API Gateway를 Eureka에 등록하기

이전 Part 6 까지는 API Gateway Service는 Eureka에 등록하지 않았다. 이제 이 Gateway도 등록을 해야한다. 등록해서 Load Balancer를 사용해보자. API Gateway Service의 application.yml server: port: 8000 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka spring: application: name: api-gateway-service cloud: gateway: default-filters: - name: GlobalFilter args: baseMessage:..

MSA 2023.10.10

[MSA] Part 6. Gateway Filter

외부의 요청이 Gateway를 통해 들어올 때 요청을 가로채서 추가적인 작업을 수행할수도 있다. 이 때 사용되는 방법이 Filter이다. Filter 설정하기 config 파일 하나를 만들기 위해 config라는 패키지 하나를 만들고 그 안에 FilterConfig.java 파일을 만들었다. package com.example.tistorygateway.config; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; import org.springframework.context.annotation.Bean; im..

MSA 2023.10.10

[Typescript/MongoDB] Part 4. MongoDB: Indexing

Part 3에서 조회의 응답 속도를 더 개선하기 위해 내장(Nesting)방법을 이용해서 조회 속도를 더 개선했었다. 그러니까 지금까지 배운 방법은 populate, virtual, nesting 이렇게 크게 3가지를 배워서 조회 속도를 개선해 봤는데 데이터가 정말 무수히 많아지면(몇백만개 또는 몇천만개 혹은 그 이상) 데이터를 내장시켜서 가져올 때 속도가 느려질 수 밖에 없다. 이는 내장시킨 데이터 때문이 아니라 스캔하는 방법에 더 가까운데 기본적인 데이터 스캔 방식은 처음부터 가지고 있는 데이터의 마지막까지 하나씩 가져와 데이터를 찾아내는 COLLSCAN(컬렉션 스캔) 이라는 스캔 방식을 취한다. 이게 데이터가 적을땐 거의 아무런 영향을 끼치지 않는다 (컴퓨터의 연산 속도는 정말 빠르기 때문에) 그러..

Typescript 2023.10.09

[MSA] Part 5. API Gateway

API Gateway를 구현해보자. 그 전에 API Gateway가 있을 때 얻는 이점이 무엇이길래 이 녀석을 구현하는지 알아보자. API Gateway가 없을 때 외부에서 어떤 요청을 하면 그 요청을 앞 단에서 해당 요청을 처리하는 서비스(뒷 단)와 통신하여 응답을 외부에게 돌려주는 구조가 될 것이다. 이 상태에서는 어떤 문제도 없지만 만약 기존에 있던 서비스들 중 어떤 것이 URL이 변경된다던지, 서비스를 운영하는 서버가 이전된다던지 등 어떤 변화가 생기게 되면 서비스의 URL같은 호출 정보가 변경된다. 호출 정보가 변경되면 그 변경 사항에 맞게 앞 단은 다시 설정 작업을 해야하고 그 작업으로 인해 서비스는 다운타임이 발생한다. 이와 반대로 API Gateway와 같은 중개자가 있는 구조를 살펴보자...

MSA 2023.10.06

[MSA] Part 4. Service 등록 (User)

이제 Eureka Server를 만들었으니 하나씩 비즈니스 서비스를 만들어보자. 그 중 첫 번째는 User Service. 똑같이 IntelliJ로 Spring Initializr를 사용하자. User Service 생성 위처럼 설정했고 Next Dependencies 설정하는 부분이 Eureka보다 더 많은데 하나씩 설정해보자. 필요한 Dependencies Spring Boot DevTools Lombok Spring Web Eureka Discovery Client 위처럼 다 체크했으면 Create해서 프로젝트를 생성 pom.xml 역시 마찬가지로 가장 먼저 확인할 파일은 pom.xml파일이다. 4.0.0 org.springframework.boot spring-boot-starter-parent ..

MSA 2023.10.06

[MSA] Part 3. Spring Cloud Netflix Eureka

Spring Cloud Netflix Eureka는 Service discovery tool을 말한다. Service discovery는 분산 시스템에서 각 인스턴스(서비스)들을 등록하고 관리해 주는데 관리해 준다는 건 외부에서 요청이 들어올 때 그 요청을 처리할 수 있는 인스턴스(서비스)가 어떤 서비스인지를 찾아주는 것을 포함한다. 위 그림에서 Netflix Eureka는 API Gateway 바로 다음 단계에 존재하는데, 서비스에 외부 요청이 들어오면 API Gateway는 요청을 받아 해당 요청을 처리할 수 있는 서비스를 찾기 위해 Eureka에게 물어본다. Eureka는 해당 요청을 처리할 수 있는 서비스가 본인한테 등록된 게 있는지 확인 후 있다면 해당 서비스에게 요청을 전달한다. 이렇게 각 서..

MSA 2023.10.06
728x90
반응형
LIST