나의 길
결혼식 방명록 - 사이드 프로젝트 회고 본문
프로젝트 의도
나는 항상 주변 사람들에게 도움이 될 수 있는 서비스를 만들고 싶다고 생각했고, 마음(아마 많은 개발자가 가지고 있을 것 같다.)만 간직하고 있다가 친한 친구가 갑작스럽게 결혼을 한다고 청첩장을 줘서 친구로서 추억을 만들어 주고 싶어 신랑, 신부를 위한 프로젝트를 기획했다.
프로젝트 기획
일단 기간은 2주 정도... 프론트인 친구와 백엔드인 나, 둘이 프로젝트를 진행했다.
기간과 역할이 정해졌고, 다음 프로젝트 진행 순서는 다음과 같았다.
- 개발할 기능 정의
- 와이어 프레임을 통한 전체적인 디자인 및 프로세스 정리
- 개발
- 테스트
- 오픈 및 운영
사용 기술
- AWS service (EC2, S3, RDS 등)
- Spring boot
- JPA
- MySQL
기술을 정하면서 인프라 쪽을 한 번도 해본 적이 없어 대중적이고 프리티어 기간을 이용해 소규모 프로젝트에 비용이 거의 들지 않을 것 같은 AWS 서비스를 활용하여 인프라를 구축해 사용하기로 했다!(비용을 최소화하기 위해 모든 설정을 프리티어의 범위 내에서 활용하였고, 이와 관련된 내용은 추후 글을 써보도록 하겠습니다!)
기능 소개
코어 기능은 간단하게 결혼식 참석자가 축의금을 낼 때 QR코드로 방명록 사이트를 접속하여 이름과 전화번호를 기입하고 방명록 작성과 사진 업로드를 하면 방명록을 신랑과 신부가 조회하는 것이다.
이렇게 방명록을 작성할 때 기입한 이름과 전화번호를 활용하여 신랑, 신부가 추첨에 참여하여 당첨된 인원들에게 기프티콘을 전달한다.
또 다른 기능은 현장의 참석자들 인터뷰 영상이다. 편집을 거쳐 신랑, 신부가 간직할 수 있는 영상을 만들어 조회할 수 있게 하였다.
여담으로 프로젝트를 할 때 기능적으로 조금 난감했던 부분은 요즘 모바일 청첩장에는 방명록 기능이 있다... 모바일 청첩장을 보고 처음 알았다ㅠ(레퍼런스 체크 좀 할걸...), 하지만 우리는 이왕 시작한 거 끝은 보자는 심정으로 프로젝트를 진행하며 기능을 조금씩 더해서 진행했다. 만약 다음에 프로젝트를 진행한다면 이런 부분을 꼼꼼히 알아보자!!!
개발 및 테스트 과정
개발
처음에 무엇부터 시작해야 할지 막막해서 제일 밑단이라고 생각되는 데이터베이스의 테이블, 컬럼, 관계 등을 정말 러프하게 짜보았다. 어차피 나중에 많은 수정을 할 것을 알기에...
이후 개발을 하기 위해 처음 써보는 JPA를 사용하기로 마음먹어 간단하게 공부를 하며 코드를 작성했고, JPA를 사용하며 직접 쿼리를 사용하지 않는 부분이 매력적으로 다가왔지만, 오히려 에러가 발생했을 때 익숙하지 않아 디버깅에 시간을 더 소요하는 현상이 발생하였고, 정말 쿼리를 하나도 사용하지 않을 수 있나 라는 의문점이 들어 프로젝트를 진행하며 나에게 고통으로 다가왔던 부분들을 정리하여 회고를 작성하는 지금에서야 시간을 내어 더 깊게 공부 중이다.(기술을 먼저 공부하고 사용하는 프로세스를 깨보고 싶었다. 올바른 선택인지는 잘 모르겠다.)
또 다른 이슈는 프론트와의 소통이었다. 내가 만든 API를 사용하기 위해 프론트엔드와 내가 무슨 노력을 어떻게 해야 하고, 헤쳐나가야 할지 둘 다 전혀 감이 잡히지 않았다. 그래서 고심 끝에 swagger를 도입하여 API 문서를 간단하게 만들어 소통하였다. 개발이 다 끝나갈 무렵에는 에러 처리에 대한 고민을 프론트와 나누었고, 결론적으로는 둘 다 에러 처리를 하자는 결과 밖에 도출할 수 없었다. 이 부분은 다음 프로젝트를 진행하기 전 더 고심해봐야 할 것 같다.(무엇이 최선인지 선택하는 것은 항상 어려운 것 같다.)
비즈니스 로직을 작성함과 동시에 CI/CD 파이프라인을 AWS S3, codedeploy 서비스와 github action을 통해 구축하였다. CI/CD 파이프라인을 구축한 이유는 수동으로 배포하는 과정에만 익숙해져 있었고, 시간이 항상 많이 걸린다는 느낌을 받았다. 그리고 다음 사이드 프로젝트들에 적용을 해보려면 경험이 한 번이라도 더 필요할 것 같아서 적용하게 되었다. 이 경험을 통해 인프라를 구축하는 것도 재미있다고 느껴 언젠가는 jenkins로도 도전해 볼 생각을 하게 되었다!
테스트
처음에는 테스트 과정을 매우 얕잡아 보았다. 개발이 어느 정도 되어 프로토타입처럼 결혼식에 참석하는 친한 지인, 관심을 보이시는 개발자 동료분들을 통해 실제 테스트를 부탁드렸다. 흔쾌히 6분 정도 해주셨고, 아주 방대한 수정 사항을 얻게 되었다.(백종원 선생님은 맛없는 집에서 식사한 뒤 손님들은 맛이 없다고 주인분께 절대로 말을 안 한다고 하셨는데 이분들은 아주 신랄하게 말씀해 주셨다. 정말 정말 감사드린다!!!)
테스트 과정에서 UI/UX에 대한 피드백을 많이 받아 프론트엔드 친구가 겸업으로 고치게 되었고, 나도 UI/UX를 사용자 측면에서 더 보게 되었고, 개발자 동료분들은 보안에 관한 것들을 말씀해 주셔서 새겨듣고 고칠 수 있는 것들은 수정하였다.
이 글을 통해 정말 감사드린다고 다시 말씀드리고 싶다! 다음에도 시간이 되신다면 부탁드려요~!
오픈 및 운영
오픈을 하기 위해 우리는 도메인을 새로 만들었다. 이유는 테스트를 위해 도메인이 많이 알려졌다고 판단하였고, 아무래도 신랑, 신부만 볼 수 있도록 하는 게 맞다고 생각했기 때문이다.
이후 모든 준비를 끝내고 결혼식 전날 친구인 신랑을 통해 우리의 서비스를 알렸고, 그렇게 운영이 되었다...
친구의 결혼식 날 매우 정신없게 홍보와 하객들 인터뷰를 하였고, 약 20명의 사용자분이 방명록과 사진을 올려 주셨다.(감사드려요ㅠㅠ)
결혼식 날 친구들과 함께 뒤풀이하며 신랑이 방명록 치킨 기프티콘 이벤트를 추첨하였고, 당첨자에게 다음 날 기프티콘을 전달하였다.
결혼식 다음 날 신혼여행에서 우리가 편집한 인터뷰 영상을 볼 수 있도록 편집하여 업로드하였고, 신랑의 감사 인사를 끝으로 우리의 짧은 프로젝트가 마무리되었다.
느낀 점
기술 외적인 부분에서는 프로젝트 진행 과정 중 모든 과정이 정말 중요하다고 느꼈다. 어찌 보면 당연한 말이지만 개발을 하는 입장에서 개발을 더 중요시하는 부분이 없지 않아 있었는데 모든 과정을 두 명이 함께 해보니 기획, UI/UX, 테스트, 인프라 등 모든 것들이 어우러져야겠다는 생각이 끊임없이 들었다.
기술적인 부분은 내가 부족한 부분이 여실히 드러나 어떤 것을 메꿔야 하는지 생각할 수 있게 되었다.(모든 부분을 메꿔야 할지도...) 예를 들어 클라우드 서비스를 사용하며 마주친 권한에 관한 문제, jpa를 사용하며 마주친 fetch join 문제, 앞에서 말한 올바른 에러 처리 방법, 유지 보수와 효율성을 생각한 코드 작성 등 한 번에 해결할 수는 없지만, 천천히 메꿔보려고 한다!
프로젝트를 끝내고 지금이라도 이런 조그마한 프로젝트를 끝내본 경험이 나에게 큰 도움이 될 것 같다.
번외) 짧은 기능 소개(개인 정보 블러 처리)
마지막으로 친구야 결혼 축하한다!

'회고' 카테고리의 다른 글
내가 Udemy에서 【한글자막】 Spring Boot 3 & Spring Framework 6 마스터하기! 를 공부한 후기 (0) | 2024.05.12 |
---|---|
내가 codetree(코드 트리)로 약 한 달간 공부한 후기! (0) | 2024.03.01 |
2023 상반기 회고 (0) | 2023.06.18 |
2022년을 마치며 (2) | 2023.02.03 |