백엔드 서버를 어떻게 구성할 것인가?
현 진행상황
연구결과를 microservice로 통합하기 위해, 현재 제작중이 repogitory에서 기존의 연구 결과를 Docker를 통해 통합하여,
각 연구 결과가 Docker만 존재한다면 어느 환경에서든 실행되고, 이를 Docker Network로 통합하여 서로 간의 일반적인 통신(string, int, float, image 등)은 통신될 수 있도록 구현이 완료되었다.
이러한 프로젝트의 시스템을 monorepo로 만들어 아래 링크에 제작하였다.
문제상황
현재 이 작업을 수행하기 위한 연구원들의 가장 큰 문제점은 백엔드에 대한 전반적인 지식이 부족한 것이다.
개요에 존재하는 ARNA의 현 상황을 해결하기 위해 microservice + gRPC가 효과적인 해결책이 될 수 있겠다는 정보를 찾아냈으나, 이게 정말 최선의 선택인지에 관해 판단할 백엔드에 전반적인 지식을 가진 검토자가 존재하지 않는다.
이러한 문제를 해결하기 위해 백엔드에 대한 지식의 큰 줄기를 만들 필요성이 대두되었다
해결방안
이러한 회사의 제품이 앞으로 변경될 시스템에 따라 관리되야하고, 기본적으로 연구에 관련된 지식에 치중되어, Docker 등과 같은 배포를 위한 세팅이 대부분 수행되지 않은 연구의 결과물을 활용하기 위해서, 백엔드 시스템을 만들 필요성이 대두되었다.
그러나 현재 연구원들중 백엔드 지식을 폭넓게 알고 있는 능력을 가진 연구원은 없는 상태이며, 이러한 문제점을 해결하기 위해
- 백엔드를 구성하는 다양한 요소를 정리한다.
- 해당 요소 내에서 어떠한 구체적인 내용들이 있는지를 백엔드 개발자 로드맵을 통해 정리한다.
- 정리된 각 내용들의 장단점을 분석한다.
- 위 내용을 기반으로, 우리의 제품이 필요한 요구사항을 정리해보고 각 요소별 최적화, 하드웨어 요구사항, 보안 등의 요소를 고려해 어떤 요소에 어떠한 구성요소를 선택할지 결정한다.
위의 과정을 수행하여, 최적의 백엔드 시스템을 구성해보고 이를 유지/보수가 가능하게 만드는 것이 백엔드 서버를 구현하는 1차적인 목표이다.
이를 수행하기위해 Github Blog에 새로운 BE 탭을 만들어 전체적인 지식에 대해 정리해본다.