(아키텍처 설계 도구 :https://cloudcraft.co/)

위 그림은 TrueEcho의 시스템 아키텍처이다.

이 시스템은 크게 클라이언트 측 애플리케이션, 서버 측 웹 애플리케이션, 데이터베이스, 서드파티 서비스로 구분된다.  유저에게 제공되는 TrueEcho 서비스는 유저의 모바일 플랫폼에 맞게 설치된 클라이언트 측 애플리케이션과 서버 측 웹 애플리케이션의 상호 작용으로 이루어진다.

클라이언트 머신은 유저가 사용하고 있는 모바일 운영체제를 대상으로 하며, 안드로이드와 ios를 타겟으로 클라이언트 측 애플리케이션을 개발하였다. 이때, 호환성과 인터페이스를 위해 크로스 플랫폼을 지원하는 프레임워크를 사용하였다. 클라이언트 사이드에서는 서버로 필요한 데이터를 요청하고, 요청한 데이터를 응답받아 유저에게 출력하는 역할을 수행한다.

웹 애플리케이션 서버에서는 주요 비즈니스 로직을 처리하며, 다양한 외부 서비스를 통합 관리한다. 특히 TrueEcho 서비스 운영에 필요한 운영 데이터를 데이터베이스에 전달하고, 조회, 가공하는 역할을 담당한다. 클라이언트와의 상호작용은 REST API (Representational State Transfer Application Programming Interface)를 이용하여 데이터를 교환한다. 일부 서비스 로직에서는 클라이언트와의 상호작용과 별개로 서버사이드 트리거가 발생한다. 이때의 트리거는 클라이언트에게 무작위 알림을 보내는 작업, 캐싱 작업 등으로, 잡 스케줄러에 의해 스케줄링 되어 정해진 시간에 진행된다.

관계형 데이터베이스는 서버로부터 전달받은 운영 데이터를 스키마에 따라 저장하고, 관리한다. 이때 WAS(Web Application Server)와 RDBMS(Relational Database Management System) 간의 통신은 TCP를 이용한다. WAS와 RDBMS 모두 cloudtype에서 제공하는 서비스에 의해 같은 프로젝트 공간에 배포되어 있으므로, 내부 프로토콜을 이용하여 빠른 통신이 가능하다.

서드파티 서비스는 크게 알림을 위한 파이어베이스 FCM service, 이미지 저장을 위한 Microsoft Azure Blob Storage를 이용하고, GPS 좌표 값을 행정구역 값으로 변환하기 위한 카카오 맵 API를 이용한다. 특히 알림과 같은 경우 서로 다른 운영체제인 안드로이드와 ios 기기로 알림을 보내야 한다. 따라서, 각 운영체제에 맞는 인터페이스를 제공하는 파이어베이스 FCM 서비스로 알림 전송에 대한 역할을 분할하여 서버의 부하를 줄이고, 유지 보수가 쉽도록 구성하였다. 이를 통해 WAS에서 백그라운드 알림을 발생시킬 수 있다. 이외에도 유저에게 인증코드를 전송하기 위해 Google 메일 서비스를 이용하였다. 따라서, 웹 애플리케이션 서버 내에서 구글 메일을 보내고, 유저의 메일을 검증할 수 있도록 구성하였다.

시스템 아키텍처에서 알 수 있듯이 각 서브 시스템은 모두 WAS에 의해 통합, 관리된다. 이는 WAS의 책임과 역할이 크기 때문에 아키텍처 측면에서 효율적이라고 볼 수 없다. WAS가 다운되거나, 걸리는 부하가 많은 상황에서는 시스템 전체에 부정적인 영향을 줄 수 있다. 따라서, 추후 부하를 분할하기 위한 로드 밸런싱이 필수적일 것으로 판단된다.