본문 바로가기

프로젝트/잔소리

[잔소리 프로젝트] CAHTER 02 | 프로젝트 계획

반응형

이전 이야기 | 프로젝트의 필요성

 

[잔소리 프로젝트] CHAPTER 01 | 프로젝트의 필요성

들어가는 말그저 정보공유에 초점을 맞추고, 그저그런 프로그램이 아니라 현재 불편함을 경험하고 있는 사례를 토대로 프로그램을 만들어 보고 싶다는 생각을 많이 했습니다. 현재 내가 알고

duklook.tistory.com

 

들어가는 말

오늘은 프로젝트를 어떤 방향으로 구성해 나갈지에 대해서 정리해보는 시간을 가져볼까 합니다. 계획이라고 해봤자 단순하고, 누락된 부분이 많습니다. 아직 덜 구체화된 부분도 있고, 빈약하죠.  하지만 이렇게 정리해보는 시간을 가짐으로써 동기부여가 되기도 하니 한번 시도해 봅니다.

 

프로젝트 계획

목적과 목표 정의

일단 해당 프로젝트의 목적은 단 한가지 입니다. "수익 계산 자동화" (->가능하다면, 자동 수익신고까지)

 

즉, 이 때 까지 불편하게 사용했던 기능들 다듬기 + 필요한 기능 추가 구현 을 통해서 나만의 대시보드를 만들어보는 겁니다.

 

해당 목적을 이루려먼 대략 다음 목표로 나뉠 것 같습니다

- 애드센스 광고 수익을 일, 월, 년 단위로 합산
- 한국 돈으로 환산
- 세율을 더하여 순수익 계산
- 이메일이나 SNS로 자동 전달

 

이렇게만 보면 크게 다룰 건 없어 보이지만, 더 추가될 수도 있으니 일단은 4가지 정도만 잡고 넘어가봅니다.

 

요구사항 분석

 정보처리기사를 공부할 떄 요구사항에는 비기능적 요구사항과 기능적 요구사항이 있다고 배웠습니다. 기능적 요구사항은 사용자 중심에서 필요한 기능을 말하는 거였고, 비기능적 기능사항은 시스템 중심의 필요한 기능을 말하는 것으로 이해 했었죠. 요구사항 명세서의 틀에서는 벗어나고 그저 추상적일 뿐이지만, 제가 사용자의 입장에서 필요하다고 느낀 부분을 간략하게 정리해 봅니다.

사용자 계정 관리
보고서 설정: 전송 주기 및 전송 방법 선택
알림 설정 : 수익 변동(-> 이 부분은 api 등의 문제로 수익 계산이 불가능할 때, 수익 정산 가능 수익의 도달 정도 등을 알리는 용도 쓰일 것 같습니다.)

 

제가 사용자라면 수익 정산이 가능한 수익이 모이게 되면, 이를 설정한 SNS 나 이메일 등을 통해 즉시 전달되었으면 좋겠다고 생각했습니다. 또한, 서비스를 이용할 때, 보다 자신에게 필요한 간략한 항목에 대해서만 시각화하여 일, 월, 년 단위로 쉽게 확인 가능하면 좋겠다고 생각했구요. 그리고 종합세를 신고해야 하는 시기가 오면 자동으로 잔소리 해주는 기능이 있다면 좋을 것 같기도 합니다. 그리고 휴대폰을 통해서 서비스를 이용하더라도 일관된 경험을 제공해줄 수 있다면 좋을 것 같다는 생각이 드네요.

 

그 외에도 시스템 관점에서 유지보수나 확장성, 보안, 문서화 등이 있겠지만 아직 명확한게 아니라서 이 정도만 적어두고 갑니다.

 

기술 스택 선정

- 프론트엔드 언어(라이브러/프레임워크): Next.js, Typescript.js
- 데이터 시각화: D3.js
- 로그인/회원가입: Auth.js 
- 백엔드: Node.js, Express.js- 데이터베이스: PostgreSQL
- 배포 및 호스팅:  (미정) GCP vs AWS  vs vercel vs cloudtype  
- 기타: AdSense API, Exchange Rate API, Nodemailer (이메일 전송), SNS API (카카오톡, 텔레그램 등)

 

일단 기술 스택은 아래와 같이 가져갈까 합니다.  Next 를 사용할지 React 를 사용할지 고민이 많았는데, 사용할 API는 모두 서버측에서 처리되어야 하기 때문에 서버와 클라이언트 간의 상태관리를 효율적으로 처리할 수 있도록 Next 를 사용하기로 결정하였습니다. 둘 다 사용해본 관점에서 본다면, Next 를 선택하는게 유지보수하기도 좋습니다.

 

데이터 시각화의 경우도 D3 말고도 리액트에서 사용하기 쉬운 Chart.js 가 있었는데, 제가 구현하고자 하는 시각화 유형은 점과 점이 선으로 연결된 단순한 그래프 형태이므로 파일 사이즈가 무려 4MB 나 차이가 나므로 조금 더 빌드 크기를 줄일 수 있도록 D3 를 선택하였습니다. D3 는 한 번도 배운적이 없어서 어떻게 적용될지 모르겠지만, 요새는 예제 등이 잘나와 있기 때문에 수월하지 않을까 싶습니다.

 

배포의 경우에는 이전에 AWS 를 이용해 배포를 해보았고, 국내 클라우드 플랫폼인 cloudtype 을 이용했었고, 학습목적으로 GCP 를 사용해보면 어떨까 고민 중입니다. 그 외 Vercel 이나 cloudtype 은 테스트 배포 용도로 쓰이거나 할 것 같습니다.

 

로그인과 회원가입의 경우에는 소셜로그인 기능을 쉽게 구현하게 도와주는 Auth.js 를 사용할까 합니다. 구글 애드센스이므로 구글 소셜 로그인과 연동할 생각이구요. 이전에는 Next-auth 으로 불렸는데, 이제는 특정 프레임워크에 종속되지 않고 다양한 프레임워크/라이브러리를 지원하므로 이름을 바꿨다고 합니다.

 

타임라인 설정

대략 이렇게 흘러갈 것 같다 라고 적어놨지만, 어찌 될지는 명확하지 않습니다. 최대한 일정 보다 더 빨리 끝낼 수 있도록 하면서도 안정적인 방향으로 나아가야 겠죠.

 

- 1주차: 요구사항 수집 및 기술 스택 선정(2024.07.07)
- 2주차: 기본 구조 설계 및 초기 세팅(2024.07.08)
- 3주차: 애드센스 API 연동 및 데이터 수집
- 4주차: 환율 변환 및 세율 계산 로직 구현
- 5주차: 이메일 및 SNS 통합
- 6주차: 테스트 및 디버깅
- 7주차: 배포 및 문서화
- 8주차 부터 : 유지보수

 

나가는 말

일단은 대략적인 프로젝트 계획을 수립해 봤습니다. 항목이 더 있는데, 불필요하다고 생각한 부분은 최대한 제외하고 나니 글이 엄청 짧아진 것 같습니다.

 

이렇게 몇 가지를 계획으로 정해두었다고는 하지만, 상황에 따라서 유동적으로 수동과 보완해 나갈 생각이므로 무조건적으로 따르지는 않을 겁니다. 즉,  언제든지 변경 가능합니다.

 

암튼, 오늘은 어떻게 프로젝트를 만들어갈지 고민해보는 시간을 가져보았고, 내일 부터 조금 씩 구조를 갖춰나가도록 하겠습니다. 이상입니다.

 

다음 이야기 | 개발환경 설정

 

[잔소리 프로젝트] CHAPTER03 | 개발 환경 설정

이전 챕터 | 프로젝트 계획 [잔소리 프로젝트] CAHTER 02 | 프로젝트 계획이전 이야기  [잔소리 프로젝트] CHAPTER 01 | 프로젝트의 필요성들어가는 말그저 정보공유에 초점을 맞추고, 그저그런 프로

duklook.tistory.com

 

반응형