Google Solution Challenge 회고 [ Don't Jaywalk Scarlett)
df -h
free -m
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab/swapfile none swap sw 0 0
vi /etc/fstab
sysctl vm.swappiness
free -m
-------------------------------------------------------------------
nohup java -jar [파일명].jar &
vi /etc/caddy/Caddyfile
sudo vi /etc/caddy/Caddyfile
sudo systemctl restart caddy
sudo journalctl -u caddy -f
curl 127.0.0.1:8080
java -jar solchall2024-0.0.1-SNAPSHOT.jar
-> 에러
ps -ef | grep java
sudo kill -9 1258
java -jar solchall2024-0.0.1-SNAPSHOT.jar
nohup java -jar solchall2024-0.0.1-SNAPSHOT.jar &
curl 127.0.0.1:8080/api/articles
-> 배포 완
BackEnd
1. 프로젝트 소개
기쁨을 나누면 두 배가 된다는 말이 있다.
'봉사활동도 혼자 하는 것 보다는 여럿이서 함께 하면 더 좋지 않을까?' 라는 아이디어에서 부터
이번 프로젝트를 기획하게 되었다.
2. 진행 기간
2024년 2월 15일 ~ 2024년 2월 26일
3. 팀 구성
- 프론트엔드 2명 (Donny, Jayden)
- 백엔드 1명 (Scarlett)
- 디자이너 1명 (Keeo)
기술 스택
FrontEnd
- JavaScript
- React
- Tailwind
BackEnd
- Java 17
- Spring boot
- JPA
- mySQL
- GCP
Design
- Figma
4. 프로젝트 진행과정
(1) 프로젝트 주제 선정 및 팀 이름 정하기
솔루션 챌린지는 총 17가지의 주제 중 하나 혹은 그 이상을 택해서 진행하게 된다.
팀 이름은 Donny, Jayden, Scarlett의 이름을 따서 "Don't Jaywalk Scarlett" 으로 지었다.
(이 당시엔 Keeo 합류 전이었다.)
(2) 프로젝트 주제 선정
공공의 이익을 서비스 할 수 있는 무언가를 만들기로 결정했다.
이 때 봉사활동 플랫폼에 관한 구체적인 아이디어가 확정되었다.
서비스 목적에 따라 웹뷰 형식으로 구현하기로 했다.
(3) 기술 스택 선정
프론트
VIte + Js + React, Tailwind, NPM 등의 기본적인 개발 환경을 정했다.
Headless UI, NextUI 등 프로덕트에 걸맞는 라이브러리 또한 선정했다.
백엔드
Java - SpringBoot 를 기본으로 JPA, GCP등 CRUD 구현을 위한 개발 환경을 설정했다.
(4) 작업 단위 선정
Donny - 웹 레이아웃 & 라우팅
Jayden - 로그인 & 카드 컴포넌트
4. 프로젝트를 통해 얻은 것
Donny
(1) 협업에서의 태도
생각보다 많이 협업을 해서 프로젝트를 했다는 느낌보다는 개인 플레이가 조합되어서 프로젝트가 마무리 된 느낌이었다. 프로젝트를 혼자하는 것도 중요하지만 조금더 많이 프로젝트 구성원들과 많은 소통과 의견을 더 많이 주고 받는 것이 중요하다는 것을 깨닫게 되었다.
(2) 미리미리 작업하기
처음 솔루션 챌린지를 할 때는 정말 상을 받지는 못하더라도 내가 얻어가는 것이 있도록 만들어보자 라는 느낌으로 시작했지만, 점점 솔루션 챌린지를 신경쓰지 않았던 점이 아쉽다. 결국 미루고 미루고 하다가 끝에 몰아쳐서 하는 자세를 이제부터 무조건 버리도록 해야겠다…
Jayden
(1) 배포 경험
이번 솔루션 챌린지를 통하여 첫 배포를 경험해봤다.
물론 배포한 것 그 자체로는 그다지 큰 업적은 아니지만, 배포까지의 프로세스를 경험해 볼 수 있어서 좋았다.
(2) 웹 뷰 제작 경험
항상 데스크톱 사이즈의 웹만 만들어 왔었는데, 이번에 처음으로 모바일에서의 뷰를 만들어봤다.
앞으로 반응형 웹을 구현하는데에 있어, 또 웹뷰를 다시 구현하는데에 있어 큰 도움이 될 것 같다!
Scarlett
(1) 혼자 진행해야 했던 백엔드 업무
두 명이서 했던 와플과는 달리 혼자 진행해야 하고 성과를 내야하는 대회라는 생각에 부담이 많이 됐다.
예전에 와플 진행하며 썼던 리포지토리의 커밋 히스토리를 참고하며 다시 한 번 기억을 상기 시켰고, 일단 무작정 Entity부터 작성했다.
title과 contents 밖에 없을 뿐 더러, 로그인 기능도 도니와 제이든이 만드는거라 알고리즘을 고민해야 하는 일은 없어서
수월하게 진행이 되는가 했지만 DB 연결과정, 서버 배포과정, api테스트 과정에서 오류가 발생했다.
아직 혼자 오류를 해결 할 수 있는 정도는 아니라서 NOX의 도움을 많이 받았다.
DB 오류는 URL을 입력하는 과정에서 '/'를 2개 붙이지 않아서 발생한 오류였다.
또한 runtimeOnly 'com.myspl:mysql-connector-j'를 추가해주지 않아서 였다.
서버 배포 과정에서는 James의 도움을 받았다.
서버 배포는 아직도 어려운 것 같다.
df -h
free -m
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab/swapfile none swap sw 0 0
vi /etc/fstab
sysctl vm.swappiness
free -m
-------------------------------------------------------------------
nohup java -jar [파일명].jar &
vi /etc/caddy/Caddyfile
sudo vi /etc/caddy/Caddyfile
sudo systemctl restart caddy
sudo journalctl -u caddy -f
curl 127.0.0.1:8080
java -jar solchall2024-0.0.1-SNAPSHOT.jar
-> 에러
ps -ef | grep java
sudo kill -9 1258
java -jar solchall2024-0.0.1-SNAPSHOT.jar
nohup java -jar solchall2024-0.0.1-SNAPSHOT.jar &
curl 127.0.0.1:8080/api/articles
-> 배포 완
4. 좋았던 점 / 아쉬운 점
Donny
- 좋았던 점
녹스한테 많은 피드백을 듣고 이거 심각하다는 생각이 들었고, 지금부터 소통을 조금더 열심히 했던 것이 이 프로젝트를 마치게 할 수 있었던 것 같다. 그리고 디자이너인 키오와 함께 만나 의견을 주고 받고 서로의 피드백을 주고 받은 점들이 개인적으로는 만족스러웠다
- 아쉬운 점
일단 기능을 구현해야겠다는 급급함에 코드 리팩토링에는 신경을 많이 쓰지 못했다. 그리고 너무 개인적으로 프로젝트를 하지 않았나 라는 느낌이 들었다. 또 한 프로젝트 기간이 길지 않은데 기간이 길다는 착각을 혼자 해서 초중반에 퍼져있던 나의 모습이 정말 반성이 된다.
Jayden
- 좋았던 점
(1) GDSC에 들어와서 처음으로 진행해 본 프로젝트였다.
엉성한 부분이 많았지만 프로덕트를 만들어내고 배포하기까지의 과정을 겪어본 점이 좋았다.
위에서도 언급했듯, 웹뷰를 만들어 본 것도 새로운 경험이어서 좋았다.
(2) 프론트지만 디자인도 했다.
첫 번째로,
프로덕트 로고 & 로그인 화면을 직접 그렸다. 메인 컬러 또한 직접 골랐다.
구글 로그인 버튼은 구글에서 제공하는 표준 사이즈대로 구현해냈고, 같은 사이즈로 일반 로그인을 구현했다.
두 번째로,
카드 자체 디자인과 레이아웃을 그려냈다.
초안을 작성하고, 프로덕트에 맞게 수정했다.
최종 디자인은 NextUI 라이브러리를 가져와 변형했다.
(3) UI 라이브러리를 본격적으로 사용해본 게 처음이었다.
일관된 느낌을 주기 위해 하나의 라이브러리를 깊게 사용했다.
이번 경험을 통해서 추후 다른 라이브러리 사용 또한 잘 해낼 수 있겠다는 생각이 들었다.
- 아쉬운 점
첫 번째로는,
프로젝트를 진행하며 업무 기간 분배를 제대로 하지 못 한 점이 아쉬웠다.
덕분에 API 연결은 사실상 하지 못 했다.
특히 솔챌 진행중이던 시절엔 백엔드의 역할을 거의 모르는 상태였기에 더더욱 그랬던 것 같다.
프로젝트 구상 단계에서 부터 설계 단계까지 기간 분배를 잘 하는 것 또한 중요하다는 점을 배웠다.
두 번째로는,
역시 소통의 아쉬움이다.
다들 소통의 중요성을 강조하지만 역설적으로 그 만큼 지켜지기 어려운게 원활한 소통인 것 같다.
덕분에 이번 프로젝트에서는 라이브러리 의존도가 상당히 높아질 수 밖에 없었다.
적절한 주기의 스크럼과 진행상황 공유가 꼭 필요하다는 점을 느꼈다.
Scarlett
- 좋았던 점
(1) 데이터베이스 설계부터 혼자 힘으로 어떻게든 해보려고 한 것이 대견하다. 정말 무엇이 오류인지 모를때만 도움을 요청했고 그 전까진 이것저것 찾아보면서 혼자 힘으로 해보려고 했다. 처음에는 오류 나는 것이 너무 두려웠다. 와플때는 코드에 빨간 줄 그어지는 것조차 무서워서 코드도 제대로 못짰는데 이번 솔챌때는 일단 구현하고 나중에 오류 해결하자라는 마인드로 거침없이 코드를 짜나갔다.
(2) 깃허브를 유용하게 이용했다. 누군가와 같이 하는 것이 아니라서 깃허브 충돌이 일어날 일은 없어서 편했지만 와플때보단 깃허브의 쓰임을 알고, 커밋도 자주했다. (뉴이어 해커톤때 커밋 안해서 코드 날아간 전적이 있음)
- 아쉬운 점
(1) 로그인기능, JWT, 보안까지 해보고싶었지만 이번 프로젝트가 간단했고 시간도 2주밖에 없어서(설날 때문에 실질적인 연휴는 1주였다) 못해봤다. 개인적으로 혼자 꼭 공부해볼것이다.
(2) GCP 기능을 많이 이용해야 가산점을 준다는 말에 혹해서 쓸데없는 google storage bucket을 설정하느라 3일을 썼다. (사실 쓸 필요가 없었다.) ‘GCP service에 대해 조금 더 알고 들어갈걸’이라는 아쉬움이 남았다.
Keeo
- 좋았던 점
개발자와의 협업을 경험 할 수 있어서 좋았다.
앞으로 진행할 GDSC 메인 페이지 프로젝트에서도 이번 협업 경험이 큰 도움이 될 것 같다.
- 아쉬운 점
(1) 충분한 시간을 확보하지 못 한게 아쉬웠다.
공모전 준비에는 많은 시간과 노력이 필요한데, 다른 일들로 바쁘게 돌아다니며 충분한 시간을 투자하지 못 한 게 아쉽다.
(2) 팀 구성원 간 소통과 협력이 원활하지 않은 것 같았다.
효과적인 팀워크와 소통은 공모전에서 성공을 이루는 데 중요한 요소 중 하나라고 생각한다.
그 점이 부족했던 것 같다.
(3) 아이디어나 실행 계획에 부족함이 있었던 것 같다.
공모전에는 창의적이고 혁신적인 아이디어가 필요하고 이를 실현하기 위한 구체적인 계획이 필요하다고 느꼈다.