연합동아리 잇타 1기에서 많은 것을 배웠습니다!
잇타란 IT's TIME의 줄임말인데요, '더는 미룰 수 없고, 이제는 공부할 때가 되었다'라는 뜻의 이름입니다,,
즉, IT에 관심있는 사람들이 모여 실력을 쌓고 결과물을 만들어 내는것을 목표로 하는 대학생연합 IT동아리입니다..!
대학생으로서 마지막 사이드 프로젝트가 되지 않을까 싶어,, 최선을 다해 프로젝트에 임했습니다.
2030세대들을 위한 공공임대주택 서비스, 저희 프로젝트의 주제입니다.
저희 프로젝트 팀은 기획1, 웹 프론트2, 백엔드2로 나뉘었습니다.
소통방식은 다음과 같은 툴을 사용했습니다. 백엔드 배포 알림은 슬랙으로 공유하였고, 일감 분배는 노션과 지라를 사용했습니다.
전체적인 프로젝트 아키텍쳐는 다음과 같습니다!
기본적으로 리액트로 만들어진 프론트와 스프링부트로 만들어진 백엔드가 REST API로 통신합니다.
사용자들에게 공공임대주택의 개수를 보여주기 위해 프론트는 네이버지도 API를 사용하고, 백엔드와 프론트는 구글 로그인, 네이버 로그인을 위해 OAuth를 사용합니다.
백엔드는 공공임대주택 데이터를 가져오기 위해 OPEN API를 사용하고 가져온 데이터들을 가공하고, Spring Batch를 사용해 일괄 처리, Quartz라이브러리를 사용해 매일 새벽4시에 DB에 적재합니다.
백엔드는 이미지를 저장하기 위해 AWS S3를 사용하고 프론트는 S3에 저장된 이미지를 가져옵니다.
또한, 백엔드는 데이터를 저장하기 위해 RDBMS인 MySQL, 토큰 재발급을 위해 리프레쉬 토큰을 저장하기 위한 NoSQL인 Redis를 사용합니다.
백엔드의 데이터 접근 기술은 Hibernate를 사용하고, 동적인 쿼리를 보다 쉽게 작성하고 컴파일 과정에서 에러를 잡기 위해 QueryDsl을 사용합니다. 또한 Entity <-> Dto 간의 에러를 컴파일 과정에서 잡기위해 MapStruct를 사용했습니다.
단위 테스트를 위해 JUNIT과 Mockito를 사용했고, 보안성을 높이기 위해 Spring Security와 JWT를 사용했습니다.
웹 프론트는 다음과 같은 기술 스택입니다.
백엔드는 다음과 같은 기술 스택입니다.
백엔드 CI/CD는 다음과 같습니다.
프로젝트를 진행하며 배운 것도 많고 보완해야 할 부분도 많다고 느꼈습니다.
- 배운점
1. Spring Batch와 Quartz를 사용해 매일마다 DB에 데이터를 자동으로 적재해보며 일괄처리에 대한 학습을 해볼 수 있었습니다. 실제로 현업에서는 배치를 사용하는 경우가 많은데, 이를 경험해볼 수 있어 의미있는 과정이였습니다.
2. CI/CD환경을 구축하는 환경에서 이전 프로젝트에서 사용하던 빌드자동화 툴인 설치형Jenkins를 고집하기 보다는, 서버에 접속해 사용할 수 있는 Github Actions과 Travis CI를 사용해보며, 설치형과 클라우드형에 대한 차이를 느껴볼 수 있었습니다.
3. 단위테스트를 진행해보며, 단위테스트에 대한 중요성을 느껴볼 수 있었습니다. JUnit과 Mookito를 사용해봤는데, 여러 오픈소스들을 참조하면서 많은 배움이 있었습니다. 예를 들어, 저희의 프로젝트는 스프링시큐리티와 jwt기반의 프로젝트인데, 인증하는 과정에서 모든 API에 대해 똑같은 인증을 진행할건지..? 아니면 이를 인증했다고 가정하고 단위를 쪼개 중요 비즈니스 로직만 테스트할건지에 대한 부분입니다.
-보완해야 할 점
이전 프로젝트에서도 많이 느꼈던 부분입니다.
1. RDB를 설계하는 과정에서 자주쓰는 PK만 Index를 걸어주는 것이 아니라, 자주 쓰이는 컬럼들에 대해서도 Index를 걸어줄 것!
2. 인프라 비용이 더 있었다면 서버를 이중화하고 DB를 하나의 EC2에 넣지 않고 따로 서버를 둬서 나눌 것!
3. 여러 명이서 프로젝트를 진행하기 때문에, 해당 컨트롤러 메서드나 서비스 메서드에 작성자와 리턴 값 등등, 정보를 작성해 줄 것!
여러 프로젝트를 진행했었지만,, 굵직한 프로젝트로는 이번이 세번째 프로젝트입니다!
이전에 진행했던 프로젝트들에 비해 코드의 양은 적을 수 있어도 코드를 조금 더 완성도 있게 작성하려고 노력했고, 많이 개선되었다고 느껴졌습니다..!
'회고록' 카테고리의 다른 글
갑진년 연초 회고록 : 게임회사의 게임서버개발자 1년 돌아보기 (2) | 2024.02.26 |
---|---|
[Project] 교내 팀 프로젝트, Tlover(트러버) 회고록 (0) | 2022.08.13 |
[Project] 연합동아리 큐시즘 24기, Hurry up HUP! 회고록 (4) | 2022.08.13 |
[Mentoring] 청년고민해결단 온라인 멘토링 회고록 (4) | 2022.04.02 |