개요
회사에서 제공하는 솔루션 중 Client에서 발생하는 속도 저하 현상을 해결하기 위한 목적
기존 클라이언트는 Client - Server, Client - Database 라는 본인 기준 이해할 수 없는 방식으로 사용중이였고
보안 기준이 향상된 고객사에서 해당 방식을 사용하지 못하는 상황이 발생하여 임시방편으로
Client - DB RESTful Server(JSON) - Database 구조를 적용하여 사용하고 있는데 이때 기존에 사용하던 Hibernate로직을 그대로 적용하여 (Hibernate에 맞게 개발되어 사용중인 인터페이스에 구현체만 HttpServlet으로 바꾼 꼴)
for문의 과도한 사용, session 과도한 접속 등의 이유로 심각한 속도저하가 발생하였고
이를 개선하고자 Client - Database middleware server를 적용하여 개발하기로 함.
기존 아키텍쳐는 클라이언트에서 REST 방식으로 데이터 요청
tomcat 서버에서 request를 sqlmapper로 데이터 조회하여 json으로 변경 후 response
클라이언트에서 response 데이터(json)를 다시 entity로 변경 후 기존 로직 사용하는 방식이였다.
이 때 잘못된 for문 사용으로 인한 세션 접속 및 parsing으로 인해 속도 저하 현상이 발생하기 때문에
+물론 제대로 잘 만들어서 사용한다면 저하현상은 발생할 일이 없다. 하지만 혁신적인 방법으로 만들어보고 싶었기에..
처음에는 Socket통신을 통해 데이터조회한 객체를 주고받을 생각을 하였으나 필자의 수준으로는 객체생성주기 및 스레드 관리를 완벽하게 해낼 자신이 없었기 때문에 여러 방법들을 찾던 중 gRPC를 발견했다.
Database는 Oracle, JPA는 Hibernate를 사용하였기에 기존방식과 동일하게
gRPC를 이용한 요청 및 응답, Hibernate를 이용한 데이터 조회를 하는 서버를 만들어보았다.
'project' 카테고리의 다른 글
[C++] 에이스타(A*) 알고리즘을 구현한 최단 경로 이동 시뮬레이션 개발 (0) | 2023.07.12 |
---|---|
[Go] Golang을 이용한 칼만 필터 적용 구현 및 시뮬레이션 (0) | 2023.07.11 |
[Project] SECS 프로토콜을 이용한 데이터 통신 Conversion Server 개발기 (0) | 2023.04.24 |
[Project] 오픈 API 데이터 통합 수집 배치 프로그램 (0) | 2022.09.29 |