brunch

You can make anything
by writing

C.S.Lewis

by campAble May 02. 2023

개발 첫 삽 뜨기: 웹 개발자의 첫 모바일앱 개발 도전

개발언어, 프레임워크, 인프라 아키텍처 선택하기 


패트는 고민이 많아졌다. 

3년차 웹 개발자인 그에게 캠퍼블은 첫 모바일 앱 개발 도전이었고, 팀의 유일한 개발자이기 때문에 A부터 Z까지 해내야했다. 우리가 목표로 한 서비스가 빈자리/오픈일 알림 서비스라는 것 그리고 메인 타겟이 3040 캠퍼임을 고려해, 먼저 프로덕트로 만들 어플리케이션을 선택했다. 


프로덕트 선택

어플리케이션의 종류는 다양하다. 

웹 어플리케이션 (예시 - 피그마, 노션 등)

데스크탑 어플리케이션 (예시 - 카카오톡PC, 슬랙PC 등)

모바일 어플리케이션 (예시 - 카카오톡, 쿠팡 등)

홈페이지


알림 서비스를 하기 위해 모바일 어플리케이션(통칭 앱)과 웹 위주의 검색습관을 고려하여 홈페이지를 프로덕트로 만들기로 했다. 



개발언어, 프레임워크 선택

개발언어 : 하드웨어에서 소프트웨어(어플리케이션)를 동작시키게 하는 프로그래밍 언어

프레임워크 : 소프트웨어(어플리케이션)를 만들기 쉽게 구성된 개발언어 도구


프로덕트마다 필요한 개발언어나 프레임워크가 달라지기 때문에 개발에 사용가능한 자원들을 찾아보았고, 필요한 비용과 시간을 정성적으로 예상해 보았다.

모바일 어플리케이션(이후 모바일 앱)과 홈페이지를 만들기 위해 필요한 고려해야 할 개발언어들이다.

모바일 네이티브 개발언어 (Kotlin, Swift 등)

프론트 개발언어 (Javascript, HTML 등)

백엔드 개발언어 (Python, Java 등)


가장 먼저 모바일 네이티브 개발언어 사용을 고려해보았다. 그러나 패트는 모바일 앱 개발경험이 전무했기에, 모바일 네이티브 개발언어인 안드로이드용 Kotlin과 IOS용 Swift 를 새로 배워야 했다. 그리고 IOS용 앱을 개발하고 배포하기 위해서는 맥북이 반드시 필요했다.

새로운 개발언어를 학습하기 위해 시간이 많이 든다는 점, 고가의 맥북을 구매해야 한다는 점.. 시간과 비용 효율을 따져 다른 방법을 탐색했다.


네이티브 개발언어를 대체하기 위한 방법을 찾던 중 Expo라는 프레임워크를 알게 되었다. Expo는 익숙한 웹 기술로 구현되어 있었고 안드로이드와 IOS가 동시에 호환되기 때문에 학습시간과 개발비용을 절약할 수 있었다. 그런데 기존 네이티브 언어에 비해 구현 한계가 있다는 이야기가 많았다. 

하지만 캠퍼블은 알림 유틸리티 앱이기 때문에 많은 기능이 필요하지 않다 생각했고, API 문서들을 확인해보니 충분히 다양한 기능을 구현 할 수 있어서 Expo를 이용하기로 마음먹었다. 


Expo는 React와 호환이 잘 되었다. 모바일 앱과 홈페이지의 프론트를 개발하기 위한 Javascript 라이브러리로 React를 사용하기로 했다. 모바일 앱과 홈페이지의 기능을 구현하기 위해 동일한 코드를 사용할 수 있었고 개발시간을 절약할 수 있었다. (현재는 홈페이지를 홍보용으로만 사용하고 있어요!)


백엔드는 그동안 사용했던 Java와 최근 관심이 커진 Python 중 어떤 언어를 사용할지 고민했다. 

Python을 백엔드로 사용하기 적합한가 찾아보았다. 인스타그램, 핀터레스트 등의 서비스들이 Python 프레임워크인 dJango를 사용해서 개발되었다는 것, 웹 어플리케이션 개발에 최적화된 프레임워크라는 것을 알게 되었다. 그렇게 dJango 프레임워크를 사용해서 API를 개발하기로 결정했다.



인프라 아키텍처 선택

인프라 아키텍처 : 서버, OS, 네트워크 등 서비스 운영에 필요한 하드웨어 및 소프트웨어


아키텍처는 Amazon Web Service(AWS)를 이용하기로 했다. 

API 서버를 구성하기 위해 AWS에서 제공하는 서비스를 찾아보았다. 

EC2 : 클라우드 가상 서버

Route 53 : 도메인 사용  

Certificate Manager : SSL 인증

RDS : 관계형 데이터베이스

S3 : 첨부 파일 스토리지


사실 이 외에도 AWS가 제공하는 서비스는 매우 많았다. 하지만 무일푼으로 시작한 우리는 금전적 비용을 줄이기 위해 꼭 필요한 서비스만 선택했다. AWS 서비스들을 사용하면 각각의 비용, 사용량 비용, 서비스간 비용, Data transfer 비용… 등 다양한 항목으로 총 비용을 예상하기 어려웠다.


먼저 EC2를 구성했다. 서버 OS로는 Ubuntu를 사용하기로 했고, 스펙별로 다양한 종류의 서버 요소가 있었지만 어느정도의 스펙이 필요한지는 테스트 이후에 정하기로 해서 당분간은 무료 티어인 t2.micro 인스턴스를 사용하기로 했다. 


데이터베이스는 AWS에서 사용 가능한 것들 중, 무료로 사용할 수 있는 PostgreSQL을 사용하기로 했다. RDS를 사용하려고 했지만 데이터베이스용 EC2를 직접 구성하면 서비스 사용 비용이 반값이었기 때문에 RDS를 사용하지 않고 직접 구성하였다.


선택한 개발언어들을 사용해서 프로젝트를 구성하고, 필요한 AWS 서비스들을 모두 세팅해서 개발을 시작하게 되었다!


완성된 프로덕트가 궁금하신 분은,

캠퍼블 앱 보러가기 



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari