Java 레가시에서 클라우드 API 연동 고군분투기

in it •  7 years ago  (edited)

클라우드에서 개발한 API를 APIGateway를 통해 Legacy에서 사용하기 위한 연동 테스트를 진행하고 있습니다.

현재 제가 속한 TF에서는 nodejs나 python으로 작업을 하여 클라우드에 API를 만들어 올려놓고 있습니다.

호출 순서는 아래와 같습니다.
Legacy Client -> Legacy APIGateway->Cloud APIGateway->Cloud API

간혹 노후된 Java1.6이하의 Legacy를 만나면 클라우드 API를 호출하는데 Connection reset이란 에러가 뜬다는 이야기를 듣게 됩니다.

먼저 Java1.8(java.1.7)에서 Java HttpClient를 사용하여 작성한 코드는 다음과 같습니다.
(변수값은 임의로 적었습니다.)

그리고 실행하면 성공으로 http response code가 나옵니다.
(실제 코드는 201을 들어오는지 확인하고 Entity를 출력하는 것으로 적었지만 여기서는 http response code만 출력하였습니다.)

하지만 Java1.6에서 HttpClient를 사용했을 때 Connection reset이라는 에러를 만나게 됩니다.
Java1.5에서도 동일한 현상이 나옵니다.
HttpClient는 현재 최신 버전인 4.5.5를 사용하였습니다.

구글링의 도움을 얻어보니 Java를 업그레이드 하라고 나옵니다.

참고로 저희 APIGateway는 TLS1.2를 지원합니다.

뭐 이와같이 바로바로 찾으면 문제가 없겠지만 Legacy의 Java 업그레이드는 최대한 신중히 테스트를 하면서 올려야 하기 때문에 왠만하면 현재 환경에서 문제를 해결해 보려고 합니다.

벼룩잡다 초가삼간을 다 태울수 있으니까요.

그러기에 이것저것 소스에서 코딩으로 해결을 해보려고 하는데 문제는 찾느라 많은 시간을 소비하게 됩니다.

앞서 초가삼간을 태우려 하지 않는다는 이야기를 했지만 레가시 환경에서 매번 이런식으로 해결하려면 초가삼간 태우려고 해도 빠르게 구현할 수 있는 방법을 찾는 게 좋을 것 같습니다.

한 예로 API Call하는 예제는 5분이면 작성 할 수 있습니다.

하지만 Legacy에서 코드를 이식하여 결과를 확인하기까지는 많은 장애물을 넘어가야 할 수도 있습니다.

그래서 안정적인 업그레이드는 지속적으로 이행해야 된다고 생각합니다.

요즘은 전부 다 만드는 것보다 쓸 수 있는 오픈소스 라이브러리를 빠르게 반영하여 비지니스 속도를 맞추는 것을 더 중요시 합니다.

알수 없는 의존성의 문제들이 터져나올때로 인한 코드의 생산성 저하나 예측할 수 없는 공수는 빠른 피드백을 받기 위한 민첩한 활동에 그닥 도움이 되지 않기 때문입니다.

다음번에는 레가시 Java 업그레이드 고군분투기를 올려보겠습니다.

이러한 이슈들을 함께 재밌게 해결해주실수 있는 분들이 많이 참여해주셨으면 좋겠습니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!