티스토리 뷰
[MSA] Spring Cloud로 개발하는 E-commerce 마이크로 서비스 어플리케이션(User Service) - 2 -
박강균 IT 2022. 4. 18. 10:47이제 본격적으로 User Service를 개발해 볼게요!
처음으로 할일은 프로젝트 생성입니다.
아래에 Spring Boot 프로젝트를 생성하주는 사이트가 있습니다.
IntelliJ 프리미엄 버젼을 사용하면 바로 생성 할 수 있지만, 저는 커뮤니티 버젼이기 때문에
직접 생성을 해줬어요 😭
그리고 다음과 같이 셋팅을 한 뒤 생성을 통해서, 프로젝트를 받았습니다.
생성이 완료 된 후에 IntelliJ 로 해당 폴더를 열어보면 다음과 같은 구조로 생성이 완료 되신 것이 보일거에요.
저희가 수정해줘야할 UserserviceApplication도 있네요! 다음과 같이 수정을 해줄게요.
#UserserviceApplication
@SpringBootApplication
@EnableEurekaClient
public class UserserviceApplication {
public static void main(String[] args) {
SpringApplication.run(UserserviceApplication.class, args);
}
}
해야할일은 단순해요! Client임을 명시만 해주면 되기 때문에 @EnableEurekaClient를 작성해주면 끝이에요.
그럼 이제 yml파일 수정을 통해서 포트를 지정하고, Client 지정을 위한 기본 셋팅을 진행할거에요.
#application.yml ( or .properties)
server:
port: 0
spring:
application:
name: user-service
eureka:
instance:
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka
그리고 Port를 0으로 줘서 자동으로 포트를 부여하도록 합니다. 다만 0번포트를 지정할때는 Instance도 설정해줘야 하는데, 이유는 다시 설명 드리면 여러개의 자동포트를 부여해도 0번포트로 인식하기 때문에, 분리를 위해서 Instance를 설정해줘야 해요.
자 이제 테스트를 위해서 Controller를 하나 생성해볼까요?
저는 아래의 위치에 Controller를 생성했어요.
controller 패키지를 생성 후 UserController를 하나 생성해줬지만, 간소화하고 싶다면 패키지 생성과정은 넘어가셔도
구동에 문제는 없어요! 생성 후 해당 클래스에 아래와 같이 작성 해볼게요.
#UsersController.java
package com.example.userservice.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/")
public class UsersController {
@GetMapping("/health_check")
public String status(){
return "It's Working in User Service";
}
}
@RestController를 통해서 RestController임을 명시해주고, @RequestMapping을 통해서 해당 컨트롤러 접속에 필요한
URL정보를 Mapping 해줬어요!. 마지막으로 GetMapping을 통해서 URL정보를 하나 더 Mapping 했습니다.
그럼 한번 실행을 해볼까요? 일단 기존에 만들어둔 Eureka 서버를 구동한 뒤, UserService도 구동해줍니다.
만약 Eureka 서버가 없다면 아래의 글을 참조해서 생성해주세요.
https://ggparkitbank.tistory.com/117
Localhost:8761 접속 시 아래와 같은 화면이 출력된다면 성공입니다.
잘 확인이 되나요? 그렇다면 따따봉입니다. :)
#User Service 고도화
자 그럼 기본적인 셋팅은 끝났으니 해당 서비스를 좀 더 고도화 해볼게요.
#application.yml
yml파일에서 greeting.message를 추가해줍니다. 해당 message의 위치는 임의로 어디든 생성해도 좋습니다.
server:
port: 0
spring:
application:
name: user-service
greeting:
message: Welcome to the Simple E-Commerce.
eureka:
instance:
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka
#UsersController
컨트롤러에서는 Environment 객체를 추가해서 yml파일에 있는 greeting 항목을 가져 올 수 있도록 할게요.
아래에 보이시는 greeting.message가 저희가 yml파일에서 설정한 부분입니다!
package com.example.userservice.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/")
public class UsersController {
private Environment env;
@Autowired
public UsersController(Environment env){
this.env = env;
}
@GetMapping("/health_check")
public String status(){
return "It's Working in User Service";
}
@GetMapping("/welcome")
public String welcome(){
return env.getProperty("greeting.message");
}
}
그럼 실제로 실행을 해볼까요? 저는 테스트를 위해서 Post-Man을 사용해볼게요.
#Test 01
여기서 잠깐 포트번호를 모르겠다면 콘솔창을 참조해도 되고, 아래와 같이 Eurekaserver에서 Status에 항목을 클릭해서
확인해도 됩니다.
http://localhost:포트번호/welcome으로 접속 시 다음과 같은 화면이 출력되시나요?
그렇다면 성공입니다! 정말 잘하셨어요 :)
이제 Database를 연동해볼까요? 사용할 DB로는 H2 Database를 사용할 예정입니다.
H2 Database는 자바로 작성된 오픈소스 RDBMS이기 떄문에 자바와의 연동률이 매우 높습니다.
또한 JPA 연동도 가능해요.
#H2 Database
가장 먼저 해야하는 일은 H2 Database를 Dependencies에 추가해주는 일입니다.
저희가 만든 프로젝트는 Maven형식으로 제작되어 있기 때문에 pom.xml파일에 다음과 같은 Dependency를
추가할게요.
#pom.xml
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
<scope>runtime</scope>
</dependency>
버젼은 여러개가 있지만, 가장 대중적으로 사용되는 1.3.176버젼을 사용했어요. 1.4.198 이후로는 자동으로 데이터 베이스를 생성하지 않아서 직접 생성을 해줘야해요. 이런 과정을 생략하고 빠르게 넘어가기 위해서 1.3.176버젼을 사용한 것도 이유가 있습니다.
#application.yml
server:
port: 0
spring:
application:
name: user-service
h2:
console:
enabled: true
settings:
web-allow-others: true
path: /h2-console
... ( 생략 )
위 와 같이 셋팅을 해주면 H2 DB에 대해서 접속하기 위한 준비는 끝났습니다. 정말로요!
h2장점은 간단한 셋팅만으로 DB를 사용 할 수 있게 도와주는 점 입니다.
셋팅을 간략하게 살펴보면 h2.console.enabled를 통해서 DB에 접근이 가능할 지에 대한 여부를 설정해줍니다.
해당 항목이 False면 쿼리문이나 조회가 쉽지 않아질거에요.. :( 그리고 Path를 통해서 실제 경로를 정의해줍니다.
그럼 실제로 어플리케이션을 실행시켜서 잘 접속되는지 확인해 볼까요?
접속방법은 간단합니다.
localhost:포트번호/h2-console 로 접속해봅시다.
다음과 같은 화면이 출력되시나요?
그렇다면 성공입니다!
그럼 이제 Controller와 클라이언트 등록 DB연동까지 기본적인 셋팅은 모두 마무리 됐습니다. 그럼 다음 포스팅부터는
정말 본격적으로 UserService를 개발해보도록 하겠습니다. 감사합니다.
* 해당 포스팅은 아래의 강의를 참고해서 제작되었습니다. 정말 좋은 강의 같으니, 관심 있으신 분들은 한번 수강하시는 걸 추천 드립니다.
'웹 프로그래밍 > MSA 학개론' 카테고리의 다른 글
- Total
- Today
- Yesterday
- kafka
- elasticSearch
- JWT
- prometheus
- 미래의나에게동기부여
- docker
- Gateway
- zipkin
- config
- git
- 루틴기록
- Logstash to ElasticSearch
- LoadBalancer
- ACTUATOR
- Feign
- 운동일기
- 운동
- consumer
- MariaDB
- MSA
- springcloud
- 오늘저녁 삼겹살
- UserService
- github
- Kafka Connect
- producer
- Logstash 활용
- Spring + ELK
- 빅-오
- rabbitmq
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |