한 학기동안 동아리에서 진행했던 프로젝트와 관련하여 회고를 해보려 합니다.
짧다면 짧고 길다면 긴 6개월동안 느꼈던 모든 걸 담을 순 없지만 핵심적인 것들을 적어보겠습니다 :)
🙆♀️팀명: LIB
📖프로젝트명: 기록의 서재
<팀 회고>
Q1. 프로젝트를 소개해 주세요!
: ‘기록의 서재’는 자신의 독서 취향을 온전히 담는 온라인 서재를 만드는 플랫폼으로, 사용자가 독서감상을 기록하는 것이 주요 기능이며 사용자 맞춤 AI 책 추천 서비스 제공해 차별화를 하고 있습니다.
Q2. 프로젝트를 하면서 어떤 문제를 겪었나요?
: 프로젝트를 진행하면서 큰 문제는 없었으나 제대로 하는 프로젝트는 다들 처음이다 보니 프로젝트를 하는 도중에 멘토단을 찾는 일이나 다른 동아리원의 도움을 구하는 일이 있었던 것 같습니다. 경험이 부족하다 보니 아는 것이 한정적이었고 진행 과정에서 막히는 부분이 생기곤 했으나 열심히 구글링과 조언을 구했기에 프로젝트를 잘 마무리할 수 있었습니다.
Q3. 프로젝트를 하기 전 후 달라진 점이 있다면?
: 프로젝트를 하고 난 후 전보다 개발 실력이 성장한 것을 느꼈습니다. 프로젝트를 진행하는 과정에서 발생하는 오류들을 해결하기 위해 공부하면서 다양한 인사이트를 얻게 되었고 프로젝트에 적용시키기 위해 전에는 써보지 않는 라이브러리나 기술 스택들을 써보면서 저희도 모르게 개발 지식이 쌓인 거 같습니다. 그리고 프로젝트를 마치고 난 후 다시 한 번 협업의 중요성을 깨달았습니다.
Q4. 어떤 역할을 맡았고, 주요 기술 스택은 어떻게 구성되었나요?
: LIB은 FE, BE, AI 각 분야별 1명씩 총 3인으로 구성되어 있습니다.
기술 스택의 경우 FE는 리액트와 함께 Vite를 사용했고, styled-components 라이브러리를 사용했습니다. BE는 스프링, 스프링 data jpa, MySQL을 사용하였으며, AI는 Pytorch, Python을 모델 개발에 사용했고, 만든 모델을 배포하기 위해서 Flask와 AWS EC2를 사용했습니다.
Q5. 프로젝트 개발 중 어려움을 겪은 경험에 대해 해결과정과 그 과정에서 얻은 교훈을 소개해주세요.
:✔️ FE는 서버와 통신할 때 따로 라이브러리를 사용하지 않고 axios만 이용하여 통신했습니다. 하지만 이렇게 통신하니 통신을 하는 코드도 지저분하고 성능적으로도 많이 느렸기에 다음 프로젝트부터는 React-Query 라이브러리를 사용하여 통신 코드를 관리해야겠다고 생각했습니다.
✔️ BE는 FE와의 통신에서 CORS에러를 계속해서 마주하여 어려움을 겪었는데 요청을 주고받는 형태에 대한 이해가 부족했기 때문에 이에 대한 문제가 생긴 것을 알고 이를 해결했습니다. 통신하는 과정에서는 소통도 중요하지만 그 통신과정을 잘 이해하는 것도 중요함을 깨달았습니다.
✔️ AI에서는 인공지능 모델을 만드는 것 만큼 중요한 것이 학습이 잘 되었는지 평가하는 것인데, 도서 추천 모델을 학습시킬 때 책들의 유사도를 기반으로 책을 추천해주는데 콜드 스타트 문제를 염려하여 협업필터링 없이 컨텐츠 기반 추천만 활용하여 명확한 평가지표가 존재하지 않아서 개발하면서 어려움을 겪었습니다. 다음에 기회가 된다면 헙업필터링도 같이 활용하여 하이브리드 추천 시스템을 만들어 보고 싶습니다.
Q6. 개발자로서 역량 향상을 위해 어떤 노력을 기울였고, 프로젝트를 통해 어떤 기술적 성장을 이루었나요?
: ✔️ FE는 프론트엔드 개발자로서 최대한 재사용 가능한 컴포넌트를 찾고 중복된 코드를 줄이기 위해 노력했습니다. 이 과정에서 기능적인 중복은 줄었지만, 스타일에서는 여전히 개선할 여지가 있다는 것을 깨달았습니다.
✔️ BE는 처음 스프링 프레임워크를 사용하는 프로젝트이기에 학습부터 실제 적용까지 하는 것에 어려움이 있었지만, 이를 통해 새로운 기술 스택을 익히는 능력을 향상시킬 수 있었습니다. 공식 문서와 블로그를 통해 학습한 내용을 실제 코드에 적용하면서 기술에 대한 이해와 활용 능력이 향상되었습니다.
✔️ AI의 경우, 팀과 협업하여 AI 모델을 개발하고 백엔드와 연결하는 과정에서 백엔드 분야에 대한 지식도 습득할 수 있었습니다. 특히, AWS 환경과 EC2를 통해 배포하는 과정을 처음 경험하면서 배포에 대한 이해도 역시 높아졌습니다.
<개인 회고>
Q1. 프로젝트를 하며 느낀 점
: 전반적으로 정석적인 절차로 개발을 했다는 생각이 들지 않았던 것 같습니다. 정석일 필요는 없지만 기본적으로 갖추어야 할 것을 해보고 효율적인 것을 알아가는 방식이 맞지 않을까 싶습니다! 일단, 일정 분배를 개발 시작 전에 제대로 하고 넘어가면 좋겠다는 생각이 들었는데요. 사실 학기 중이라 계획대로 전부 되지는 않지만 아무래도 처음이라 더 효율적으로 계획하지는 못했다는 느낌이 들어 다음에는 이부분에 신경을 써보려 합니다. 또 이번에는 분야별로 깃허브를 따로 운영했었는데 그 부분도 Git branch 전략을 적용해서 체계적으로 운영해봐야 할 것 같습니다.
다른 팀원들은 이번 프로젝트가 처음이었는데 다들 열심히 해주어 고맙고 더더 성장하는 첫걸음을 함께 할 수 있어 좋았습니다. 더불어 옆에서 너무나도 잘 도와주신 멘토단분들께도 감사하다는 말 전합니다 ;)
Q2. 더 공부해보고 싶은 부분이나 추가하고 싶은 기능은?
: 앞으로 더 공부해보고 싶은 부분은 인프라쪽(이 외에도 다방면에서 기본적인 개발지식 쌓기!는 필수)이고 개발해보고 싶은 기능은 소켓통신을 이용한 채팅기능 등 사람들의 활발한 교류를 도울 수 있는 기능입니다. 공부할 것은 너무나도 많아서,,~ㅎㅎ
Q3. 아쉬웠던 점이 있다면?
: 자바로 프로젝트를 진행한 경험이 전무해서 자바와 스프링을 익히고 적용하는 일련의 과정을 한학기에 하려다보니 깊이있는 이해를 바탕으로 프로젝트를 진행하지는 못했던 것 같다는 생각이 들어 개인적으로 아쉬움이 남았습니다. 또한 익숙했다면 더 많은 기능도 추가하여 완성도를 높일 수 있었을텐데..하는 아쉬움도 있었지만 그래서 더 열심히 하고 싶다는 생각이 드는 것 같습니다. 지금은 최소 8월까지는 현 팀원들과 못다만든 기능들을 마무리하고 마침표를 잘 찍고 넘어가려합니다.
Q4. 프로젝트를 하면서 가장 힘들었던 점은?
: 앞서 언급했듯이 지식이 부족하다보니 멘토링을 할때나 동아리원들에게 물어보는 일이 많았습니다. 나의 부족함이 나에게만 영향을 주는 것이 아닌 팀과, 동아리사람들에게 영향을 준다고 생각하니 당시에는 마음이 좋지 않고 미안함이 컸던 것 같습니다. 하지만 지금 돌아봤을땐 개발동아리의 존재 의미가 그런 것이 아닐까 싶고 이런 과정에서 서로가 성장하는 것이 진짜 의미있는 과정이 아닐까 생각이 들어 지금은 묻고 답하는 일련의 과정들을 하나의 성장으로 생각합니다.
Q5. 다음 프로젝트를 진행할 때 고려사항이 있다면(주제나 팀원 등)?
: 일단 기획도 관심이 있어 조금은 더 기획에 힘써서 기틀을 잡아나가고 싶고 그 과정에 있어 같은 열정으로 시너지를 낼 수 있는 팀원이면 좋을 것 같습니다. 개발에 있어서도 생소한 기능, 기술이라도 해보려는 마음과 열정, 적극적인 태도만 있다면 못할 것은 없다고 생각합니다. 배포와 더불어 실사용자를 만들고 데이터를 분석해 이를 다시 반영하기 위해 최적화하고 또 성장을 반복하는 큰 그림을 바라보며.. 다음은 더 깊게 빠져들어 함께 결과물을 만들어갈 수 있으면 좋겠다는 생각이 듭니다.
'프로젝트' 카테고리의 다른 글
헥사고날 아키텍처? (Hexagonal Architecture) (1) | 2024.09.16 |
---|---|
[로그인 인가 인증] Refresh Token Rotation (0) | 2024.08.16 |
[백엔드] 개발할 때 사용하면 좋은 프로그램 소개: JMeter (0) | 2024.08.05 |
[OpenFeign] BE, AI 통신 (0) | 2024.07.14 |
[설계] AWS EC2내부 구조 설계 (아키텍쳐 설계 도구 링크 공유) (1) | 2024.06.09 |