오픈소스 SW 프로젝트 후기

2025. 11. 23. 19:37·프로젝트 회고

전역하고 편입한 뒤 처음? 진행하는 팀 프로젝트

중간 전에는 Git 버전관리, Docker, Kubernetes 사용법과 환경 설정 등과 CI/CD(github Actions 배움)에 대해 배웠다

그리고 중간 후부터 이걸 활용해서 팀 프로젝트를 시작했다.

 

주제 정하기

역시 가장 오래 걸리는 것은 주제 정하기!

학습 관리 프로그램, 학교시설 예약 등... 사실상 거기서 거기인 주제가 나오다가한 조원분이 "어디서 담배 소매업과 관련된 문제 해결하는 공고를 봤던거 같은데 이거 어떤가요" 라고 하셔서 뭔가하고 보니담배 소매업은 각 사업장이 도보 100m 이내에 같이 있을 수 없다는 조항이 있어서 이걸 계산하는 것이 복잡해 나온 공고였던 듯 하다. (지자체마다 조건은 조금씩 다르지만 비슷하다)나름 주제가 신선하고 내가 이전에 지도 관련된 프로젝트로 몇 번 해봐서 실행 가능성에 대해서 조금 조사해보니 조금 법률을 우리 입맛대로 조금 해석하면(?) 충분히 가능할 것 같아서 이 주제가 선정되었다!

 

이 프로젝트는 교수님이 주요기능을 3가지 이상 만들라고 하셨기 때문에 고민 끝에 다음 기능들을 구현하기로 하였다.

(물론 중간에 조금 변경된 건 안 비밀)

  • 지정 위치가 법적 문제가 있는지 확인
  • 법적으로 제한되는 구역을 지도 위에 표시
  • 위시리스트 기능
  • 지정 위치 근처 상가 건물 검색(나중에 추가됨)

설계

이제 주제를 정했으니 구현을 위한 기술 스택과 아키텍처를 어떻게 구성할지 각자 조사를 시작했다.

일단 이 기능들을 구현하기 위해서는 제일 중요한 지도를 어떤 것을 이용할지 고민도 하기 전에 naver 지도 api가 가장 추천이 많았기 때문에 Naver map를 이용하기로 하였다.

그리고 이 프로젝트에서 가장 어려울 것이라고 생각되는 것이 '기준점으로부터 실제 도보로 100m 거리의 제한 구역'을 구하는 것인데 구글링과 우리의 친구 Gemini에게 물어보니 두가지 정도로 방법이 좁혀졌다. 

OSMnx라는 라이브러리를 이용하거나 이러한 기능을 제공하는 openrouteservice라는 api를 이용하는 방법이 있었는데, 반학기라는 시간적 제약 때문에 라이브러리를 공부할 시간까지는 없을 것 같고 또 해당 라이브러리를 이용했을 때 속도가 많이 느리다는 조사가 있어서 ORS api를 이용하기로 결정했다.

그리고 이제 어떻게 아키텍처를 구성할까 고민을 했는데 api를 이용하기로 했기 때문에 서버-클라이언트 아키텍처를 이용하기로 했다.(사실 다른건 고려할게 없긴 한것 같기도 하고)

이제 백엔드로는 python 라이브러리를 활용할 경우가 있을 것 같아서 fastAPI를 이용해서 구현하기로 하고 프론트는 팀원분이 맡았기 때문에 팀원분은 flask를 이용해서 구성하기로 했다(사실 프론트는 그렇게 무거울 필요는 없어서 가벼운 flask가 정답인 듯하다)

DB의 경우 ORS api가 polygon의 형태로 제공되기 때문에 이를 저장할 수 있는 PostgreSQL로 선택했다.

 

git/github & 구현

이제 어느 정도 설계를 마쳤으니 각자 파트를 분담해 구현을 시작했다.

팀 모두가 같은 환경에서 개발하기 위해서 일단 docker-compose 파일을 완성해서 환경을 통일하고 프로젝트 관리를 위해서 git 조직을 개설하고 프로젝트를 시작했다. 여기서 배운 git 전략을 사용하기 위해서 main-release-develop branch로 나누어서 계층적으로 관리하였고 각각 fork하여 개인 리포지토리에서 개발을 진행하였다. 

 

여기서 내가 github을 전부 관리했었는데 이게 예전에 했을 때는 단순히 branch를 나누지 않고 fork하고 pr하고 문제생기면 개인 repository 날리고 다시 fork하는 식으로 대충 했었는데, git 활용도 점수에 포함되기 때문에 브랜치 전략과 pull request, commit관리, issue를 고려하려고 하니 좀 어려웠었다. 그래도 덕분에 어떤 기능이 있는지 어떤 식으로 pr을 쓰고 commit을 쓰는지 등을 많이 알게 된 것 같다. 다른 조들의 발표를 보니 우리조가 issue를 활용을 못한게 너무 아쉬웠고 pr도 더 전략적으로 썼어야 했다는 것을 많이 느꼈다. (카톡에서 말고 github comment를 적극활용할 걸...) 그리고 생각보다 설정이 엄청 많아서 너무 어렵... 그래도 다음 프로젝트에서는 더 체계적인 프로젝트 관리를 할 수 있을 것 같다.(아마도)

그리고 github actions로 작성했는데 처음 해보는 거라 너무 어려웠다. 사실 AI가 작성하고 작동이 되도록 수정하는데 시간을 다 썼다.

 

개발 구현은 AI와 함께하니 대부분 어렵지는 않았다. 게다가 예전에 naver developer를 써본적이 있어서 api 설정하는 것도 어렵지는 않았다. 다만 Polygon 데이터는 익숙하지가 않아서 이걸 다루는데는 조금 어려웠던 것 같다.

그리고 제일 마지막 기능은 뭔가 부족한 것 같아서 기능을 추가한 것인데, 주변 상가라는 건물을 검색하는 api 기능은 없었기 때문에 이걸 어떻게 구현했냐면 상가 건물에 들어가는 키워드("카페", "병원", "음식점" 등)를 만들어서 해당 위치의 행정동 + 키워드를 검색하여 나오는 주소들을 저장하고 이 주소들의 중복 주소를 그룹화하여 건물로 특정하는 방법이다. 이 방법을 사용하여 상권이 있는 건물을 특정시킬 수 있다. 다만 검색범위와 키워드를 늘릴수록 정확도가 올라가는데 시간도 오래 걸린다는 단점은 있다.

모든 발표와 발표자료 제작을 내가 했었는데 덕분에(?) 발표한지가 오래되서 실력이 많이 녹슬었는데 많이 기름칠 된것 같다

 

후기&느낀점

이 프로젝트를 진행하다보니 정말로 느낀게, 내가 이전에 했던 대다수의 프로젝트는 AI없이 했던 프로젝트였어서 기능을 구현하는데 너무나도 편하고 속도가 빠르다는 것을 엄청나게 느꼈다. 그와 동시에 교수님들이 종종 얘기하는 대로 내가 과연 AI보다 쓸모가 있는가에 대해서 많이 고민하게 됐다. (AI가 신입 5년차 수준의 역할을 한다고 얘기하심.) 하지만 조원들이 하는 것과 내것을 비교했을 때, 나는 이전에 AI 없이 했던 프로젝트의 경험을 바탕으로 어느 부분에서 오류가 많이 생기는지 알고 있었고 어디서 대비해야 하는지 많이 고민하고 있다는 것을 느꼈다.(다들 git branch 전략에 대해서 너무 안일하게 생각하길래 내가 github 관리를 하고 이게 왜 좋은지 설명했음)또 프로젝트 진행 중에 AI로 코드를 짜면서 서로 합치다보니 점점 스파게티 코드가 되어 갔다(모든 기능이 계속 main파일 하나에서 구현 중;;). 그래서 내가 계속해서 리팩토링을 중간중간 진행했다.(기능별 구조화 했음) 

결과적으로 이런 경험 때문에 AI가 필요하긴 하지만 결국 아직은 사람이 필요하다고 느꼈다(물론 어느 정도 프로젝트를 어떻게 진행해야 하는지 알고 있는 사람) AI를 이용해서 스스로의 생산성을 극대화 할 수 있도록 개념 공부와 AI 활용을 열심히 해야 할 듯하다.

 

 

 

그래서 정리중인 수업내용 정리

 

'프로젝트 회고' 카테고리의 다른 글

[심화캡스톤] SMPL을 이용한 3D 스타일 피팅 서비스  (0) 2026.07.05
기초/심화 캡스톤 디자인 프로젝트 회고  (1) 2026.07.05
'프로젝트 회고' 카테고리의 다른 글
  • [심화캡스톤] SMPL을 이용한 3D 스타일 피팅 서비스
  • 기초/심화 캡스톤 디자인 프로젝트 회고
chanhuy
chanhuy
  • chanhuy
    차늬
    chanhuy
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • algorithm (9)
      • Python (2)
      • database (8)
      • csts (3)
      • Operating System (0)
      • 오픈소스SW (1)
      • Git & Github (4)
      • 프로젝트 회고 (3)
      • 정보처리기사 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    algorithm
    시간복잡도
    pl/sql
    Git
    graph algorithms
    greedy
    index
    알고리즘
    D&C
    backtracking
    Python
    recursion
    dynamic programming
    프로젝트후기
    COMMIT
    Reduction
    오픈소스SW
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
chanhuy
오픈소스 SW 프로젝트 후기
상단으로

티스토리툴바