1. 서론
이번 프로젝트에서 내게 맞춤형으로 편리한 서비스를 종합적으로 제공하는 휴대폰 앱을 만드려고 한다. 예를 들면 아침에 자주 타는 버스 도착 시간을 알림으로 띄워주는 식이다. 이를 위해서는 휴대폰에 클라이언트 앱이 설치되어야 하고 서버가 있어야 한다.
2. 아키텍처
구상해본 구조는 다음과 같다.
보안을 위해 앱서버 포트를 외부에 직접 노출시키지 않고 VPN 서버를 통해서만 접속 가능하도록 설계했다. 앱 화면을 클릭했을 때 서버에 요청을 보내고 처리되어 화면에 보이는 과정은 다음과 같다.
통신 과정
1) OpenVPN 앱을 통해서 VPN 서버에 연결한다. 공유기 DDNS를 사용하면 IP 대신 주소로 접속할 수 있다.
2) VPN 서버에 연결되면 내부망에 있는 것처럼 간주되므로, 앱서버 내부망 IP로 직접 요청을 보낼 수 있다. 다만 내부 DNS 서버를 구축하여 클라이언트 프로그램에 IP를 하드코딩하지 않고 도메인주소로 요청을 보낼 수 있다.
3) 앱 서버에서 DB 서버와 통신하며 요청을 처리한다.
4) 응답을 클라이언트에서 처리하고 화면에 보여준다.
위 서버들은 Docker 위에 컨테이너로 띄울 계획이다.
3. 개발 환경
서버 PC에는 Linux 운영체제를 설치할 거라 직접 개발은 어려워 보인다. 그래서 데스크탑 Intellij에서 개발한 후 Github에 push하고, CI/CD를 구축하여 자동으로 서버에 배포가 되도록 설정하려고 한다. 데스크탑도 내부망에 연결되어 있기 때문에 SSH로 직접 붙어서 DB 상태를 확인하는 등의 작업을 할 수 있다.
4. 결론
Linux 설치해보는 것도 처음이고, CI/CD 구축도 처음이다. 하지만 재미로 시작한 것인 만큼 즐거운 만큼만 해보려고 한다. 처음부터 복잡한 프로그램을 개발하기보다는 파이프라인과 개발환경 세팅에 집중해보자.
'홈서버 만들기' 카테고리의 다른 글
[홈서버 만들기 - 5] VPN 서버 구축 (0) | 2024.09.28 |
---|---|
[홈서버 만들기 - 4] Linux 설치 후 원격 접속하기 (1) | 2024.09.22 |
GMKtec N100 미니 PC 언박싱 (0) | 2024.09.21 |
[홈서버 만들기 - 3] 클라이언트 앱 만들기 (5) | 2024.09.15 |
[홈서버 만들기 - 1] 장비 구매 (2) | 2024.09.13 |