본문 바로가기

개발일지/TIL

(89)
[230801] [파이널] 기획 및 S.A 작성 (5) CI/CD 스펙 선정 ✔ Git Action 💬 코드가 저장된 곳에서 CI/CD를 한 번에 처리할 수 있다. 제한된 자원을 가지고 있는 우리에겐 비용이 들지 않는다는 것도 큰 장점으로 다가왔다. 프로젝트 개발과 성능을 개선하는 데에 집중을 하는 것이 목표였기에 빠른 구축도 중요하게 작용했다. ✔ Docker 💬 Docker는 다양한 환경에서 동일한 동작을 보장하는 것이 큰 장점이라고 생각한다. AWS Freetier부터 사용을 해서 상황에 따라 Scale-up을 통한 성능 향상을 생각하고 있었다. 그러다 보니 매번 환경설정을 다시 해주는 것보다 Docker 이미지를 사용해 컨테이너에서 동일하게 동작할 수 있도록 하려고 한다. ✔ ECR 💬 Git Action과 EC2 사이에서 Docker 이미지의 공유 ..
[230731] [파이널] 기획 및 S.A 작성 (4) S.A 피드백 적용 ✔ 스코프 추가 💬 현재 스코프가 4명이서 하기에는 다소 적다는 피드백이 있었다. 팀원들과 추가 기능들에 대해서 논의를 했다. 후보군을 먼저 선정을 했다. 후보군 중에서 결정을 했다. 아이디어 경매에 얼마나 어울리는가를 기준으로 삼았다. ➡ 채팅 기능 ( 아이디어 토론장 ) ➡ 아이디어 경매 예약하기 ✔ ERD 피드백 💬 나누어져 있는 테이블을 단일 테이블로 합치는 것을 피드백으로 주셨다. 확장 가능성이나 성능면에서 장점이 있다고 하셨다. 하지만 우리는 테이블 분리했을 때 검색 성능을 향상할 수 있어서 적용한 것이었다. 우리의 의견과 반대되기에 정확한 이유를 듣고 싶어 질문을 했다. ✔ ERD 질문 답변 ✅ ERD를 작성할 때 테이블을 무조건 분리한다고 해서 좋은 것이 아니다. 정합성..
[230730] [파이널] 기획 및 S.A 작성 (3) MVP 작성 💬 처음부터 생각한 기능들을 전부 구현하기보다는 최소 기능들로 먼저 만들기로 했다. 개발 주기를 짧게 잡아 빠르게 서비스를 내놓기 위함이다. 성능 향상을 목적으로 하는 팀이기에 MVP 통해 성능적인 문제를 빠르게 알수 있고 개선해 볼 수 있다. ✔ MVP 스펙 Tech Stack Java, Spring Boot, JPA, Security, JWT DB MySQL DevOps AWS EC2, AWS RDS, AWS S3, AWS CodeDeploy, Git Actions, Docker Test Junit5, Mokito, Jmeter ✔ MVP 스펙 1주차 기획 마무리, Git, CI/CD, AWS 서버 환경 구성 2주차 API 개발, 더미 데이터 수집 및 저장 3주차 API 성능 테스트, A..
[230729] [파이널] 기획 및 S.A 작성 (2) Git 컨벤션 💬 팀원들과 Git Repository를 생성하기 전에 컨벤션을 정하기로 했다. 좋은 컨벤션은 협업을 원활하게 해 주기 때문이다. ✔ Git Branch main : 배포 환경 develop : 개발 환경 feature/기능명 : 기능 구현 refactor/기능명 : 코드 리팩토링 fix/기능명 : 버그 해결 ✔ Git Comment Type feat : 새로운 기능 추가 fix : 버그 수정 docs : 문서 수정 refactor : 코드 리팩터링 test : 테스트 코드, 리팩터링 테스트 코드 추가(프로덕션 코드 변경 X) chore : 빌드 업무 수정, 패키지 매니저 수정(프로덕션 코드 변경 X) design : CSS 등 사용자 UI 디자인 변경 comment : 필요한 주석 추가 ..
[230728] [파이널] 기획 및 S.A 작성 (1) 주제 선정 ✔ E-Commerce Service 💬 대규모 트래픽 / 데이터를 동시에 다뤄볼 수 있을 뿐만 아니라 취업 시장에서 가장 많은 부분을 차지하는 것으로 보였다. ✔ 주제 결정 💬 아이디어를 판매하는 서비스는 있지만 경매하는 사이트는 없는 것으로 보인다. 처음에는 경매를 통해서 순간적으로 생기는 많은 트래픽을 경험해 볼 수 있을 거라고 생각했다. 그로 인해 생기는 데이터를 가지고 많은 데이터를 다뤄볼 수 있다고 생각했다. ✔ 아이디어 경매 기능 로그인 아이디 비밀번호를 통해 로그인한다. 회원가입 회원가입을 한다. 아이디어 등록 아이디어 최소 경매입찰금액, 이미지, 제목, 내용, 카테고리를 설정하고 등록한다. 특허 데이터를 통해서 등록이 가능한 아이디어인지 확인을 해준다. ( 10분 고정 시간은 ..
[230727] [클론] Lifegram 테스트 코드 작성 (3) 테스트 코드 결과 ✔ CI/CD 자동 테스트에 커버리지 적용 결과 💬 CI/CD 배포 시 Jacoco에서 측정한 코드 커버리지를 적용되었다. Main에 적용한 코드에 대해 테스트 통과 및 코드 커버리지 도달을 못했을 시 배포가 되지 않았다. 이를 통해 발생할 수 있는 버그를 배포 전에 해결할 수 있었다. ✔ 테스트 코드 커버리지를 모두 채운 결과 💬 3일 동안 팀원 분들과 테스트 코드를 작성하는 데에 시간을 많이 사용했다. Junit5, Mokito를 사용해서 작성을 했다. 처음에는 서툴렀지만 차근차근 하나씩 해 나갔다. 성공, 실패 케이스를 하나하나 작성을 해가면서 코드 커버리지를 채워나갔다. 80~100 퍼의 코드 커버리지를 모두 채울 수 있었다. ✔ 테스트 코드 커버리지 결과 생각 오늘 오후 1시까..
[230726] [클론] Lifegram 테스트 코드 작성 (2) 테스트 코드 해보니? 💬 무작정 작성해 보았던 테스트 코드에서 많은 것을 배울 수 있었다. 내가 알지 못했던 버그를 발견해 수정을 할 수 있었다. 필요 없던 코드들을 발견할 수 있었다. 코드를 조금 더 나은 구조로 변경할 수 있었다. ✔ 알지 못했던 버그 💬 Postman 같은 API 테스트 툴을 사용해 통과하는 경우 제대로 코드를 작성했다고 생각했다. 그런데 이번 테스트 코드를 작성하다가 잘못된 코드가 있다는 것을 발견하게 되었다. 잘못된 코드를 수정해 버그를 예방할 수 있었다. // 수정 전 if (!StringUtils.hasText(jwt)) { request.setAttribute("unauthorization", "401 인증키 없음."); } else if(JwtUtils.validateTo..
[230725] [클론] Lifegram 테스트 코드 작성 (1) 테스트 코드를 하는 이유? 💬 테스트 코드는 유지보수의 비용을 줄여주는 것이 핵심인 것 같다. 문제를 발견하는 것은 개발부터 애플리케이션 배포 단계까지 모두 가능하다. 하지만 문제 발견 시점이 애플리케이션 배포 단계까지 가까워질수록 드는 비용이 기하급수적으로 높아지는 것 같다. 테스트 코드를 작성하여 개발 단계에서 가장 적은 비용으로 문제를 해결해야 한다. 그동안 테스트를 작성하지 않았던 이유..? 💬 모든 테스트 코드가 옳은 건 아닌 것 같다. 코드 작성하는 데 드는 비용이 유지보수에 드는 비용보다 높다면 좋지 않은 테스트라고 생각한다. 이러한 기준 때문에 나는 테스트 코드를 작성해야 하는 것과 아닌 것을 선택하기가 어렵다. 테스트 코드를 멀리하게 되고 애플리케이션 동작 확인으로만 유지보수를 했다. 이..