Home [Devlog] 첫번째 프로젝트를 시작해보았다.
Post
Cancel

[Devlog] 첫번째 프로젝트를 시작해보았다.

드디어 첫 개인 플젝을..!

훈련소를 다녀온 지 3주가 다 되어간다. 훈련소를 마치고 일주 정도 있다가 나도 나름 프로젝트라고 말할 수 있을 정도의 프로젝트를 하나쯤 만들어 보자고 다짐하게 되었고 이번 프로젝트를 시작하게 되었다.
프로젝트를 시작한 지 2주 정도 지났는데 65% 정도 진행을 한 것 같아 중간 정리 글을 남기게 되었다. 이제 내 기억을 더듬어 어떤 의식의 흐름이 있었는지 되짚어 보는 시간을 가져보도록 하겠다.

무엇을 만들까?

처음부터 난관에 봉착했다. 어떤 프로젝트를 만들어야 할까?
처음에는 뭔가.. 흔하지 않고?? 나만의 어떤 독창적인 프로젝트가 무엇이 있을까 고민을 해보았다.
..
… 진짜 어떻게 해야할지 감이 안잡혔다.
이러한 방향으로 프로젝트 아이디어를 떠올리는 건 답이 없다는 결론을 내리게 되었고 우선 내가 무엇을 할 수 있는가?나에게 필요한 게 뭐가 있을까?라는 포인트로 관점을 전환하게 되었다. 이렇게 생각을 하다 보니 몇 가지 적당한 기준을 찾게 되었다.

  1. 우선은 웹이다.
  2. DB를 다뤄보자.
  3. 나라도 사용할 수 있는 서비스를 만들자.

이렇게 기준을 잡게 되었고 처음엔 블로그 글감 정리 웹페이지를 만들려고 하였고 프로젝트를 진행하던 중간에 Daily Task Manager로 바꾸게 되었다. 이 프로젝트가 더 내가 잘 쓸 수 있을 거 같고 몇몇 추가 기능을 붙이기에 적합하다고 생각했었던 것 같다.

그렇게 나는 Daily Task Manager를 만들기 시작했다.

Daily Task Manager??

내가 작년에 인턴을 할 적에 매일 아침마다 슬랙 채널에 아래처럼 남겨서 작업을 했었다.

1
2
3
4
5
6
7
8
9
10
# 예시입니다.
[Done]
- api 서버 만들기
- writing swagger file
[In progress]
- writing dockerfile
- 에러 핸들링
[ToDo]
- 서비스 배포하기
- 다음 프로젝트 찾기

이렇게 하루를 시작하기 전에 내가 뭘 끝냈고 뭘 해야 하는지 적어놓고 하루를 시작하니까 내가 뭘 해야 하는지 몰라 얼타는 시간도 줄어들고 내가 해온 것들을 보고 다음 작업 방향을 잡기도 쉬워서 굉장히 나에게 도움이 많이 되었던 문화(?)였다.
그래서 이를 토대로 앱을 만들면 좋겠지만 일단 내가 앱을 만들 줄 모르니까 (ㅠㅠ;) 웹으로 만들어 보기로 하게 된 것이다.

어떻게 만들것인가?

자 이제 무엇을 만들지 정했으니 어떻게 만들지를 정해야 했다.
처음엔 백엔드와 프론트를 구분하여 백엔드에서는 json 파일을 반환해 주는 api만 만들고 프론트에서 요청을 통해 받아온 값으로 화면을 띄워주는 CSR 방식을 채택할까 고민하다가 내가 javascript를 아직 능숙하게 다루지 못하여서 그냥 서버 쪽에서 대부분의 처리를 맡는 방식을 택하게 되었다. (다음엔 꼭 프론트, 백을 구분하여서 작업을 진행해보고 싶다.)
손그림..

대충 이런 모형의 구조설계를 그려놓고 코드를 짰다. 이게 서버 쪽에서 라우팅, db에 쿼리, 화면 렌더링 등의 기능을 전부 해서 그런지 코드가 굉장히 복잡해졌다고 생각된다.. 평소에 코드 짤 때 좀 더 가독성 좋고 확장성 높은 코드를 짜려고 노력하고 클린 코드에 대한 책과 글들을 읽었는데도 막상 직접 짜려니까 맘처럼 쉽지는 않았던 것 같다. 일단 완성을 하고 리팩토링을 하는 시간을 가져봐야겠다. 아무튼 내가 만들려는 daily task manager에 사용된 스택들은 아래와 같다.

  • backend: golang
  • orm: gorm
  • db: mysql
  • frontend: golang, js

현재 상황은?

서비스를 사용하는 영상을 짧게 따와봤다.
차례대로 회원가입, 로그인, 서비스를 사용하는 모습이다. 회원가입
로그인
테스트

앞으로 남은 일들

이제 기본적인 기능은 아래 두 가지 정도만 구현하면 완성이라고 볼 수 있겠다…

  • 카드 수정, 삭제 버튼 달기
  • 날짜에 따른 카드 목록들 불러오기

기본적인 기능을 전부 구현하고 나면 전체 목록 불러오기라든지 좀 더 사용자에게 나은 경험을 제공하기 위한 기능들을 고민해 보고 추가하려고 한다. 물론 그전에 코드 한번 훑어보면서 좀 더 나은 코드를 위한 리팩토링부터… 하는 시간을 가져야겠다. 아 그리고 어느 정도 버전 1.0 정도 퀄리티가 되었다 싶으면 aws에 배포도 해야겠다.

마무리하며

확실히 사용자들이 사용한다고 가정을 하고 프로젝트를 만드니까 생각할 거리들이 굉장히 많은 것 같다. 뭐 로그인, 회원가입을 진행할 때 올바르지 못한 입력이 들어왔을 때 어떻게 사용자에게 메시지를 전달해야 할지부터 시작해서 “daily task는 남들에게 보이고 싶지 않을 수도 있는데 해당 유저의 아이디를 path parameter로 받아와 페이지를 띄우면 누구나 볼 수 있는 페이지가 되겠구나” 해서 로그인 인증 과정을 거쳐 만들어진 쿠키를 통해 페이지를 띄워줘야겠다 하는 과정도 있었고 어떻게 기능을 구현하고 요소들의 위치를 어디에 배치해야 좀 더 사용자에게 더 나은 경험을 전할 수 있을까까지 생각해 볼 기회를 가졌다 ㅋㅋ.
진짜 전문가는 마감에서 차이 난다라는 말이 있듯이 프론트가 얼마나 중요한지 ㅋㅋ 프론트의 소중함에 대해 알게 되었고 나도 어느 정도 할 줄은 알아야겠다는 생각이 들어 자바스크립트 프레임워크 하나 정도는 어느 정도 다룰줄 알아야겠다 싶었다. ㅋㅋ 언젠가 vue.js 혹은 앱 프론트까지 다룰 수 있는 flutter에 대한 포스팅도 한 번쯤 올릴 시기가 오지 않을까 싶다.

그럼 오늘은 이정도에서 포스팅을 마치고 다음엔 프로젝트를 완성시킨 후 포스팅을 준비해 오겠다.

This post is licensed under CC BY 4.0 by the author.

[Go] .env로 환경변수 설정하기

[Go/gin/embed] gin 프레임워크에서 embed패키지 사용해서 static file serving하기