2025. 3. 13. 22:52ㆍSpring Microservice
💪 Spring Microservices in Action Chapter05 프로젝트 종합 테스트
이 챕터는 Spring Microservices in Action - Chapter05 프로젝트의 Docker Compose 기반 실행 및 개별 서비스 테스트를 수행하는 방법을 정리한 테스트 개요입니다.
테스트는 Docker Compose를 이용한 전체 서비스 기동, 개별 컨테이너 확인, License Service의 Actuator 및 컨트롤러 동작 테스트로 구성됩니다. 🚀
🔄 Docker Compose 실행
docker-compose -f docker/docker-compose.yml up
🖥️ docker-compose 실행 결과를 아래처럼 콘솔에서 확인할 수 있습니다.
📖 아래 콘솔은 터미널로 gitBash를 선택하였을 경우 예입니다
🔄 각 서비스의 컨테이너 실행 체크
도커 데스크탑에서 docker compose 커맨드 실행 결과로 각 서비스들의 도커 이미지가 생성되었음을 다음과 같이 확인할 수 있습니다.
📌 docker project 확인
docker 라는 이름의 docker compose 프로젝트가 생성되었음을 확인할 수 있습니다
⚠️ 이 docker 라는 이름은 docker-compose.yml이 위치한 디렉토리 이름입니다.
🔍 컨테이너 확인
✅ 각 서비스들의 각각의 컨테이너에서 정상적으로 실행되고 있음을 다음과 같이 확인할 수 있습니다.
🐘 데이터베이스 서비스 확인
🐚 PostgreSQL 데이터베이스에 접속하는 psql CLI 커맨드 실행
⚠️ 아래 그림처럼 Exec 탭에서 해당 컨테이너의 터미널을 사용할 수 있습니다.
psql -U postgress -d ostock_dev
🗄️ PostgreSQL 데이터베이스가 실행될 때 수행되는 sql 쿼리들
💾 init.sql
CREATE TABLE IF NOT EXISTS public.organizations
(
organization_id text COLLATE pg_catalog."default" NOT NULL,
name text COLLATE pg_catalog."default",
contact_name text COLLATE pg_catalog."default",
contact_email text COLLATE pg_catalog."default",
contact_phone text COLLATE pg_catalog."default",
CONSTRAINT organizations_pkey PRIMARY KEY (organization_id)
)
TABLESPACE pg_default;
ALTER TABLE public.organizations
OWNER to postgres;
CREATE TABLE IF NOT EXISTS public.licenses
(
license_id text COLLATE pg_catalog."default" NOT NULL,
organization_id text COLLATE pg_catalog."default" NOT NULL,
description text COLLATE pg_catalog."default",
product_name text COLLATE pg_catalog."default" NOT NULL,
license_type text COLLATE pg_catalog."default" NOT NULL,
comment text COLLATE pg_catalog."default",
CONSTRAINT licenses_pkey PRIMARY KEY (license_id),
CONSTRAINT licenses_organization_id_fkey FOREIGN KEY (organization_id)
REFERENCES public.organizations (organization_id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID
)
TABLESPACE pg_default;
ALTER TABLE public.licenses
OWNER to postgres;
💾 data.sql
INSERT INTO public.organizations VALUES ('e6a625cc-718b-48c2-ac76-1dfdff9a531e', 'Ostock', 'Illary Huaylupo', 'illaryhs@gmail.com', '888888888');
INSERT INTO public.organizations VALUES ('d898a142-de44-466c-8c88-9ceb2c2429d3', 'OptimaGrowth', 'Admin', 'illaryhs@gmail.com', '888888888');
INSERT INTO public.organizations VALUES ('e839ee96-28de-4f67-bb79-870ca89743a0', 'Ostock', 'Illary Huaylupo', 'illaryhs@gmail.com', '888888888');
INSERT INTO public.licenses VALUES ('f2a9c9d4-d2c0-44fa-97fe-724d77173c62', 'd898a142-de44-466c-8c88-9ceb2c2429d3', 'Software Product', 'Ostock', 'complete', 'I AM DEV');
INSERT INTO public.licenses VALUES ('279709ff-e6d5-4a54-8b55-a5c37542025b', 'e839ee96-28de-4f67-bb79-870ca89743a0', 'Software Product', 'Ostock', 'complete', 'I AM DEV');
☑️ 위 두 개의 *.sql 파일의 적용 여부 상태를 다음 쿼리로 확인할 수 있습니다.
SELECT * FROM orgnizations;
SELECT * FROM licenses;
🔐 vault 서버 서비스
☑️ vault-init.sh 파일 적용 여부를 확인합니다.
#!/bin/bash
echo "==> 스크립트 실행 중"
echo "==> 서버 dev 모드로 실행"
# vault server 시작 // -config=/vault/config/config.hcl
vault server -dev -dev-root-token-id="myroot" -dev-listen-address="0.0.0.0:8200"&
# 대기 시간 추가 (예: 5초)
echo "==> 서버가 제대로 동작할 때까지 대기 5초"
sleep 5
# Vault 서버에 접근할 주소 설정
export VAULT_ADDR='http://0.0.0.0:8200'
# root 토큰 설정
export VAULT_TOKEN='myroot'
echo "==> application 데이터 저장"
VAULT_TOKEN=myroot vault kv put secret/application @/vault/data/application.json
echo "==> application/dev 데이터 저장"
VAULT_TOKEN=myroot vault kv put secret/application/dev @/vault/data/application_dev.json
echo "==> default 데이터 저장"
VAULT_TOKEN=myroot vault kv put secret/licensing-service @/vault/data/default.json
echo "==> dev 데이터 저장"
VAULT_TOKEN=myroot vault kv put secret/licensing-service/dev @/vault/data/dev.json
echo "==> prod 데이터 저장"
VAULT_TOKEN=myroot vault kv put secret/licensing-service/prod @/vault/data/prod.json
# 스크립트 종료까지 서버를 계속 유지
echo "==> Vault 서버를 유지합니다. Ctrl+C로 스크립트를 종료하세요."
wait
토큰을 통해 로그인합니다
application, application/, licensing-servic, licensing-servic/ 시크릿 생성 유무를 확인합니다
각 시크릿의 내용을 체크합니다
⚠️ 이 글에서는 단지 몇 개의 체크 이미지만 업로드하였습니다.
🗄️ config server 서비스
config server 서비스가 성공적으로 시작된다면, 아래 이미지의 빨간색 하이라이트처럼, vault 서버로부터 해당 정보를 정상적으로 얻어 오는 것을 확인할 수 있습니다.
🗄️ licensing Service server 서비스
licensing Service server 서비스가 성공적으로 시작된다면, 아래 이미지의 빨간색 하이라이트처럼, config 서버로부터 해당 정보를 정상적으로 얻어 오는 것을 확인할 수 있습니다.
Postman에서 licensing 서비스 인스턴스에게 actuator 리스트를 가져오는 request를 전송합니다
'Spring Microservice' 카테고리의 다른 글
클라우드 환경에서의 서비스 디스커버리 (0) | 2025.03.14 |
---|---|
On service discovery (0) | 2025.03.14 |
docker compose 파일 분석 및 실행 (0) | 2025.03.13 |
HashiCorp Vault 구동 (0) | 2025.03.13 |
Spring Boot 기반 Licensing Service 프로젝트 분석 (1) | 2025.03.13 |