본문 바로가기

프로젝트/SICAL

SICAL v1.0.0 개발노트

SICAL 이란?

SICAL은 시험 캘린더의 줄임말로, '대한민국의 시험일정들을 모아보자'를 모토로 만든 앱이다.

추후 시험뿐만 아니라 다른 행사나 개인일정 등도 포함하고, 커뮤니티 기능 등을 통해 재방문율이 높은 앱을 만들어볼 생각이다.

SICAL 로고. 똑똑한 생물인 고래를 차용했다.

앱 제작 목적

앱의 제작 이유는 세 가지 정도이다.

  1. 다양한 시험 종류와 많은 수험생이 있어 잠재 수요가 크다고 판단
  2. 2021년 5월 기준 비슷한 앱이 거의 존재하지 않음
  3. 유저들 간의 커뮤니티 형성을 위한 발판

위에서 말한 기능들을 추가하면 사람들이 꽤 쓰지 않을까 하는 생각도 있지만, 과연 제대로 된 수익을 낼 수 있을지 의구심이 많다. 이를 빠르게 확인하려면 일을 엄청 해서 반응을 확인해보는 수밖에 없다(...).

2021년 3월경부터 제작을 시작해서 매우 부실하지만 플레이스토어와 앱스토어에 1.0.0을 런칭한 상태이다(너무 부실해서 앱스토어 심사자가 추가 설명을 요청하며 리젝했을 정도... 설명을 더하니 다행히 승인되었다).

개발 노트의 목적

개발 노트를 쓰는 이유는 프로젝트의 현재 상태와 앞으로의 방향에 대해서 고민하는 목적이기도 하고, 앱의 발전상을 기록하기 위한 목적이기도 하다. 아마 업데이트가 이루어질 때마다 하나씩 쓰지 않을까 싶다.

다만 이번엔 첫 노트이니 우선 SICAL의 전반적인 기술 스택 및 구조를 설명할 것이다.

SICAL 기술 스택 및 구조

  1. APP
    1. 작업 효율을 위해 크로스 플랫폼 프레임워크인 Flutter를 사용해 개발했다. 처음 써보는 프레임워크지만 자료들이 훌륭해 다행히 도중에 포기하지는 않았다. 예전에 리액트 네이티브도 써봤는데 비교가 불가능할 정도로 플러터가 개발 경험이 좋다. 앞으로도 앱 개발을 한다면 플러터를 계속 사용할 듯 싶다.
  2. SERVER
    1. 인프라
      1. 아마존의 EC2를 사용했다. 처음에는 DB 부분을 RDS로 쓰고자 했으나, 거의 하루에 천원 꼴로 돈이 나가고 있어서 곧바로 EC2에 MariaDB를 설치해서 포팅했다. CPU 2코어에 4기가 램인데 이 서버에서 벗어날 일이 있을지 모르겠다.
      2. EC2 내부에 컨테이너를 하나 두어 그 안에 nginx와 nodejs 서버를 돌리고 있는 상태이다. 컨테이너의 상태 관리는 도커 커밋 및 푸쉬를 통해 진행하고 있다. (원래는 도커파일을 이용해야 한다고 하지만 일단은 커밋만 사용하고 있다)
    2. 웹 서버
      1. 리버스 프록시로 nginx를 사용했다.
      2. nginx 뒷단에는 nestJS 서버가 돌고 있다. nestJS는 express를 기반으로 한 타입스크립트 프레임워크다. 파라미터들의 자동 형변환 등 다양한 기능을 제공해 줘서 하나씩 알아가면서 사용하는 중인데 아직은 나쁘지 않은 느낌이다.
    3. DB
      1. MariaDB를 EC2 로컬에서 돌리고 있다. 이건 굳이 도커를 사용하지는 않았다.
      2. ORM Tool로는 NestJS에서 추천하는 TypeORM을 사용하고 있다.
    4. 그 외
      1. 코드의 상태 관리는 GITHUB을 통해 관리하고 있다.
      2. 앱 디자인은 Figma라는 툴을 속성으로 배워 활용하고 있다.

그동안 오랜 시간동안 이것저것 많이 했다고 생각했는데 너무 깨작깨작 해왔는지 아직 멀었다.

ver 1.0.0 개발 노트

  1. 국가전문자격시험 일정(원서접수일, 시험일, 합격발표일)들을 달력 앱에서 모아볼 수 있음
    1. 날짜 변경, 오늘로 이동 기능
    2. 일정 상세 클릭 시 상세 일정 조회
    3. 공식 홈페이지로의 링크 탑재

시연영상

 

'프로젝트 > SICAL' 카테고리의 다른 글

SICAL v1.1.0 개발노트  (0) 2021.06.05