2023년 졸업과제 캡스톤디자인 프로젝트 회고 - (2) 시작을 위한 고민과 선택
업데이트:
프로젝트 소개
- 프로젝트 이름 : 어바웃 송담
- 프로젝트 인원 : 2명
- 기술 스택
- FE : HTML5/CSS3/JS, JQuery, BootStrap
- BE : SpringBoot 3.2.0, JAVA 17, Mustache, JPA, Lombok, mySQL
- 인프라 : Cafe24 가상서버, 우분투 리눅스 20.04.6 LTS CLI/GUI, XRDP, SSH, FTP
- 개발내용
- 이전 이야기 : (1) 프로젝트 시작
- 다음 이야기 : (3) 서버 인프라 구축
나는 말하는 감자다
프로젝트를 하겠다고 마음먹었으나 중대한 문제가 있었다. 프로젝트를 맡은 두 명 모두 무엇을 어떻게 해야 할지 전혀 모르는 것이었다. 제대로 된 서버를 만들어 본 경험도, 완성된 하나의 웹 앱 프로젝트를 만들어 본 경험도 없었다.
3학년 1학기를 막 시작했던 우리가 그동안 배운 것은 모두 이론적이거나 파편적인 내용이었다. 우리가 한국어를 쓰고 한글을 안다고 해서 소설이나 논문을 쓰기는 어려운 것처럼, 컴퓨터 공학/개론을 배웠다고 해서 개발에 직접적인 도움이 되지 않고, 파이썬을 배웠다고 인공지능을 다루지 못하는 것과 같이 우리는 프로젝트를 기획하고 개발하는 것에 어려움을 크게 느끼고 있었다.
물론 그동안 배운 것들이 모두 유익하고 도움이 되는 내용인 것이 사실이지만, 당시의 우리는 그 어떠한 개발 방법론도 모르고 기본 인프라 구축에 어떤 것이 필요한지 알고 있지 않았다. 우리는 개발자보다는 코더에 더 가까웠다.
일단 협업 환경부터 정하자
프로젝트 진행 방향의 고민에 상관없이, 우리는 자료를 공유하고 회의를 위한 공간이 필요했다. 무엇보다도 고민만 하기보다 자료를 찾아보며 한 곳에 모아보면 어떻게든 틀이 잡히리라는 생각이 들었다.
그래서 우리가 알고 있던 메신저 시스템으로 가장 익숙한 디스코드를 사용하기로 했다. 처음에는 다이렉트 메시지를 사용했으나 채널을 나누어 사용하는 것이 효율적이기 때문에 디스코드 서버를 개설하여 자료를 정리하기 시작했다. 디스코드의 원형인 슬랙은 당시 유료화 정책으로 디스코드를 선택하게 되었다.
어떤 서버를 만들어야 할까
처음 우리가 이해했던 프로젝트의 목표는 "원격 접속 가능한 서버 구축 및 운영"
이었다. 그래서 가장 먼저 생각해야 할 두 가지 문제가 있었다. 하나는 '어떤 서버를 만들까?'
이고, 다른 하나는 '서버를 어떻게 구축할까?'
였다.
서버의 운영체제는 처음부터 리눅스로 정했다. 윈도우 계열이 아닌 운영체제 중에서도 가장 보편적이면서 익숙하지 않은 운영체제이니 한 번쯤은 꼭 제대로 다뤄보아야 한다고 생각했기 때문이다.
서버의 구성에서 가장 고민이 많았다. 우리가 대체 뭘 만들어야 하는지도 제대로 이해하지 못하고 추상적인 상태였기 때문에 크게 CLI 사용 환경과 GUI 사용 환경 두 가지로 나누어 생각하게 되었다.
그러나 서버 구성은 당장에 큰 문제는 아니었다. 사용할 수 있는 서버가 없기 때문이다. 그래서 우리는 기반이 되는 서버를 가장 먼저 정해야 했다.
서버 구축은 물리 서버를 직접 조립하거나 대여하기에는 비용적으로도 부담이었고 한 학기만 사용될 서버에는 낭비라고 생각했다. 학교에 예산 신청을 지원할 수는 있겠으나 폐지한 학과에 예산을 얼마나 할당해 줄지도 의문인 상황이었다. (입학하자마자 학과가 사라졌다)
그래서 우리는 머리를 모아 여러 아이디어를 냈다. 사용하지 않는 안드로이드 공기계를 개조하여 서버로 운영하거나, 가상서버를 대여하는 방법이었다.
그중에서도 가상서버가 가장 적절하다고 판단했다. 공기계를 개조하는 것은 자원 낭비가 심할 것으로 생각했고, 경험적으로도 도움이 되지 않으리라 생각했기 때문이다.
어떤 가상서버를 대여해야 할까
서버의 방향성은 잡혔으니 이제 문제는 '어떤 가상서버를 선택해야 하나?'
가 되었다. 후보는 AWS(아마존), 카페24, Vultr(벌처) 세 가지였다.
학과의 모든 팀의 트래픽과 서비스를 감당할 것을 전제로 프로젝트를 진행해야 하므로 CPU의 성능과 저장장치의 용량 모두 중요하게 생각해야 했다. 서버를 우리 팀만 사용하는 것이 아니라 학과 전체가 사용해야 하니 성능이 부족하기보다 남아돌아야만 했고 서버 운영에 대한 감이 없었기 때문에 성능에 대한 마진을 최대한 크게 잡고자 하였다.
아직 캡스톤디자인이 정식으로 발표되지 않은 시기였기 때문에 정확한 서버 수요나 트래픽 등을 예측할 수 없어 대용량의 연산과 트래픽이 발생할 것을 전제로 하여 최대한 보수적으로 접근해야만 했다.
아마존은 프리 티어(무료 체험 서비스)가 있고 안정적인 회선과 서비스를 기대할 수 있지만 프리 티어에서는 CPU 성능을 기대하기 어려워 보였고, 정확한 요금 계산이 어렵고 달러 결제를 해야 하기에 예산 책정이 어려우리라 생각했다. 또한 운이 나쁘면 예기치 못한 요금폭탄을 맞을 수 있다는 불안감도 있었기 때문에 적합하지 않다고 판단했다.
벌처는 아마존에 비해 합리적인 선택지였다. 월정액제로 예산 책정도 간단하며 인터페이스도 아마존에 비해 친화적이라고 느껴졌다. 서울 회선이나 기가인터넷 지원 또한 좋은 점이었다.
하지만 한국어를 지원하지 않아 서비스에 대한 문의나 커뮤니케이션이 어려워 보였고 벌처의 vCPU 단위도 이해하기가 어려워 원하는 성능을 낼 수 있을지 확신을 가질 수 없었다. 결제도 아마존과 같이 달러로 해야 하기에 예산 신청에 어려움이 있을 것으로 보였다.
그래서 Cafe24의 서비스가 우리에게 가장 나은 선택지이며 사실상 유일한 선택지나 다름없었다. 달러 결제는 환전수수료나 환율의 변동 등 비용적으로 고려 해야 할 변수 등으로 견적서 산정에 어려움이 있을 것으로 보았다. 카페24는 온라인으로 견적서를 신청해 바로 받아 볼 수 있는 시스템이 구축되어 있었다.
Cafe24의 서버 사양도 우리의 요구사항을 충족한다고 보았다. cpu의 자세한 사양을 알 수는 없었지만 RAM과 SSD 용량도 넉넉하고 도메인도 기본적으로 제공하고 있어 추가적인 지출이 필요하지 않아 합리적이었다.
우분투 리눅스 터미널을 받다
그렇게 우리는 Cafe24의 자이언트 서버로 견적서를 받아 서버를 개설하게 되었다. 이제 우리에게는 리눅스 터미널이 생긴 것이다.(예산 신청이 계속 딜레이되어 5월이 되어서야 서버를 대여할 수 있었다.)
그렇다. 리눅스 터미널이다. 우리가 대여한 것은 실질적으로 아무것도 설치되지 않은 초기 상태의 터미널 환경이다. 우리는 이제부터 이 깨끗한 우분투 리눅스를 용도에 맞게 테라포밍해야 한다…