2022/2022-2

[2022년 2학기] 오픈소스 소프트웨어 프로젝트

JWonK 2022. 12. 21. 18:43
728x90
반응형

2022년도 2학기 교내 수업으로 오픈소스 소프트웨어 프로젝트 수업을 수강하였다.
하나의 주제를 정해 한 학기 동안 팀 프로젝트를 진행하는 수업이었다. 비록 성적은 30명 중 30등을 하였지만 얻어가는 것이 훠어어어어얼씬 많다고 느껴서 아무렴 상관없다. 내가 준비를 덜 해서 시험을 못보고 데모를 잘 못해서 30등을 하였다고 생각하지 다른 사람들보다 개발 실력이 못해서 30등을 했다고는 생각하지 않는다. 정신승리일 수도 있지만 난 그렇게 생각해야지

총 10팀이 있었고 다른 팀들은 대부분 pygame 라이브러리를 사용하여 프로젝트를 진행하였다. 우리팀과 다른 한 팀 총 2팀만 웹 프로젝트를 진행한 것으로 알고있다. 우리도 pygame프로젝트를 진행해도 상관 없었지만 내가 팀원들한테 이왕 할 거 멀리 보고 남는 걸 하자라고 강하게 건의했다. pygame을 진행하는 프로젝트가 남는 것이 없다는 것은 절대 아니다. 하지만 내가 공부하고 있는 내용을 적용해보고 결과물을 만들어내는 과정에서 보다 배울 것이 더 많다고 생각했다. 학교 다닐 때 이런 경험이 없으면 언제 있을까 싶기도 하다. 또한, 수업 시간에 진행하는 프로젝트도 충분히 개인 포트폴리오로 사용할 수 있다고 생각했다. 결과물 퀄리티가 훌륭하진 않을 수 있지만 진행하는 과정에서 분명히 남는 게 존재할 것이라 확신했고 솔직히 좀 스트레스 받긴 했지만 결과론적으로 절대 후회하지 않는다. 현재의 결과를 알고 그 때로 다시 돌아가도 팀원들한테 웹 프로젝트를 진행하자고 강하게 건의했을 것이다.

이번 프로젝트를 진행하면서 내가 무엇을 더욱 공부해야할 지 그것들을 어떤 우선순위로 정해 공부해야할 지 감을 잡을 수 있었다. 위에서 말했듯 퀄리티가 솔직히 좋지는 않다. 대략 2개월 동안 React + Spring/Flask + ML을 진행한 프로젝트이면서 학기 수업으로 진행했기에 본 프로젝트에만 집중할 수가 없었다. 그래도 무엇을 했고, 어떤 부분에서 어려움을 겪었고, 다시는 이런 어려움을 겪지 않기 위해 이를 정리해야한다고 필요성을 느껴 시간이 걸리더라도 작성해보고자 한다.

우선 진행했던 프로젝트는,
URL 요약 정리 및 공유 웹 사이트이다.

원래 약 1년 전 같은 주제로 다른 팀에서 진행한 프로젝트가 있는데 그 당시 백엔드 프레임워크는 Django였다. 나는 내가 공부하는 것을 적용시켜고자 Spring으로 진행하였고, 프론트엔드를 맡은 친구가 있어 그 친구와 협업, 머신러닝 파트를 맡은 팀원이 있어 그 친구와도 함께 진행했다. 머신러닝 파트를 백엔드와 연동하기 위해 Flask 또한 사용하였다.

주절주절 쓰는 것보다 정리되어있는 Github RAEDME.md를 읽는 것이 훨씬 편할 것 같다.

https://github.com/jw0293/2022-2-OSSProj-KKJ-5

GitHub - jw0293/2022-2-OSSProj-KKJ-5

Contribute to jw0293/2022-2-OSSProj-KKJ-5 development by creating an account on GitHub.

github.com

  • 개발 기간
    • 2022년 10월 8일 ~ 2022년 12월 13일
  • 개발 인원
    • 웹 프론트엔드 : 1명
    • 웹 백엔드 : 1명 (본인)
    • 데이터 전치리 및 머신러닝 : 1명
  • 구현 항목
    • 회원가입 및 로그인 : Spring Security - JWT
    • 인가 기능을 이용한 접근 제한(JWT)
    • 채팅방 구현
    • Spring↔Flask 연동
    • URL 리스트 


첫 협업 프로젝트를 경험해보니, 왜 협업이 중요하다고 강조하는지 몸소 느껴졌다.
스스로 문제를 해결하기 위해 고민하다 해결했다고 한들, 내가 해결한 부분을 다른 곳(프론트엔드)에도 적용하기 위해 또 그 부분을 고민하는 경우가 있었다. 또한, 어떤 원인으로 문제가 발생하였는지도 확실치 않다. 이럴 경우에는 각자가 맡은 부분을 다시 한 번 점검해보는 과정이 필요한데 혼자 할 경우 문제점을 찾기란 정말 쉽지 않다고 느껴졌다. 하지만 하나의 문제를 해결하기 위해 함께 원인을 찾고 고민하며 대화하다보면 내가 모르는 부분에서 해결책을 찾을 수 있고 내가 모르는 부분을 이해하는 것 또한 결론적으로 나에게 매우 필요한 과정이었다. 내가 무지한 부분에서 발생한 문제점 또한 지적 받을 수 있어 중요하다고 생각하였다.


쓰고자 하는 글들 목록은,

  • Stomp 프로토콜 기반 웹소켓 채팅방 구현
  • DB 엔티티 설계 및 테이블 설계
  • RequestParam과 RequestBody 구분
  • Response Image 처리
  • Spring과 Flask 연동

정도 될 것 같다. 어렵지 않은 내용도 있으나 직접 개발에 적용하려다 보니 어려움을 느낀 부분이 있어 정리를 해야겠다고 생각했다.
그리고 배포를 해보지는 못해 방학 기간 내 해보고 Docker로도 적용시켜보는 것을 해보고자 한다.

728x90
반응형