2023. 1. 24. 23:03ㆍDevelopment
Mock server
Micro service architecture 에서는 내부 타 Service와 Interaction을 하는 경우가 많이있고, 새로운 Micro service를 개발할 때 외부 호출을 통해 동작을 테스트 해야하는 경우가 종종있어왔습니다. 이때 mock server를 이용했으면 하는 케이스가 많이 있어서, 좀 더 쉽게 셋업을 할 수 있는 Mock server에 대한 고민을 하다가 이번에 토이 프로젝트 삼아 서비스를 만들게 되었습니다.
Github repo
Config
routingPolicies:
- path: "/books/1"
filters:
- type: "DelayFilter"
args: |
{
"delayTime" : 2000,
"deltaTime": 1000
}
response:
code: 200
body: "Good"
- path: "/books/2"
filters:
- type: "HeaderFilter"
args: |
{
"responseHeader" : "test"
}
response:
code: 200
body: |
{
"title" : "queen"
}
어떻게하면 손쉽게 Mock server를 셋팅할 수 있을지에 대한 고민의 결과는 yml 포멧으로 리턴 값들을 정의해줄 수 있고, 이를 Server를 띄우면서 다이나믹하게 환경에 맞게 변경할 수 있는 형태로 구현하게 되었습니다.
그냥 값만 Return하면 재미가 없으니... filter의 개념을 도입해서 Delay를 주거나... Header의 값을 변경한다던가 하는 기능을 추가 구현하였으며, 앞으로 랜덤 값을 리턴한다던지, 필요하게 되면 좀 더 다양한 기능을 더 확장해나가는 것도 좋을 것 같았습니다. 일단은 현재 필요한 필터만 구현을 해두었습니다.
Run
docker로 띄울 수 있도록 구성을 해두었기 때문에...
docker run --mount type=bind,source=/{absolute path}/routing_config.yml,target=/service/routing_rule.yml -p 8100:8100 wenys/generalmock
mount를 통해서 만들어둔 routing_config.yml 파일을 내부의 정해진 파일으로 binding 시켜주면 서비스가 해당 위치의 파일을 참조하여 config를 구성하는 구조로 구현하였습니다.
앞으로 좀 더 확장시켜나가면서 좀 더 기능을 추가해 나갈 계획입니다.
누군가 기능 추가를 도와주신다면 언제든 환영입니다!!
'Development' 카테고리의 다른 글
Spring cloud gateway response body cache (0) | 2023.01.24 |
---|---|
Spring cloud gateway request body cache (0) | 2023.01.24 |
GSON - Composite pattern class (2) | 2023.01.24 |
Design pattern - Composite pattern (0) | 2023.01.24 |
golang GO routine channel 테스트 (0) | 2023.01.24 |