API GATE WAY (1)

반응형
반응형

api gateway는 msa에서 필수 요소중 하나로
하나의 api로 여러개를 호출 할 수 있다고 한다.
예를 들어, web, app 등등이 존재한다고 가정하면 하나의 API로 이것들을 통신이 가능하다고 한다.

근데 나는 솔직히 이해가 되지 않았다.
왜냐하면 rest api가 web이든 app이든 바뀌지 않을텐데 하나의 api로 통신이 된다는게 말이 되지 않는다고 생각했다.
그림으로 그려보면 다음과 같다.

분명히 restapi는 변경이 되지 않을텐데 api gateway가 있을 필요가 없다고 생각했다.
근데 이건 잘못된 생각이 었다.
단 한가지 내가 빼먹은 부분이 존재하는데 그건 바로 포트(port)다.

즉, 기기1는 1000번 포트를 기기2는 2000번 포트를 기기3은 3000번 포트를 가진다고 해보자.
그러면 이런식으로 그림이 그려지는게 맞다.

왜냐하면 포트번호가 달라지기 때문에 요청도 달라져야 된다.
근데 이렇게 되면 문제가 api를 만들때 모든 기기에  포트를 추가해줘야 된다.
불가능한건 아니지만 그렇게 되면 쓸모 없는 시간을 소비하는 느낌이 강하게 든다.
왜냐하면 포트를 일일이 추가해줘야 되기 때문이다. 또, 랜덤 포트를 사용한다면 일일이 추가해주는것도 답이 없다.

이러한 문제점을 api gateway가 해결했다고 생각이 든다.

나는 스프링이라는 프레임워크에서는 넷플릭스라는 회사에서 zuul을 만들었다.
zuul1.0에서는 비동기 문제가 있었다고 한다.
다행스럽게도 2.0이 들어서 이러한 문제를 해결했다고 한다.

근데 아쉽게도 spring boot 2.4 이후로 zuul를 사용할 수 없게 되었다.
하지만 다행스럽게도 스프링 피보탈에서 zuul를 대체할 api gateway 라이브러리를 자체 제작하였다고 한다.
이것의 큰 특징으로는 함수형으로 코드를 작성할 수 있다고 한다.
yml파일로도 작성할 수 있다고 한다.

코드 같은 경우는 나중에 천천히 작성해 볼 예정이다.

 

반응형

'SPRING START!' 카테고리의 다른 글

API GATE WAY (1)  (0) 2021.10.04
생성자 주입을 사용해야 되는 이유  (0) 2021.09.22
AOP  (0) 2021.08.25
DI 와 IOC  (0) 2021.08.14
이벤트 발생시키기!!  (0) 2021.01.12
스프링은 환경을 어떻게 조성할 수 있을까?(프로파일, 프로퍼티, 국제화)  (0) 2021.01.10

댓글(0)

Designed by JB FACTORY