2021 군장병 공개SW 온라인 해커톤 후기

주노·2021년 10월 22일
1

2021 국방해커톤

목록 보기
1/3
post-thumbnail

서론

국방부에서 해커톤을 진행한다고하길래 무료한 군생활을 의미있게 보내기 위해 참가했다.

사실 Spring3로 API 개발을 위한 공부만 했지 막상 프로젝트 개발경험도 없고 해커톤 참여 경험마저 전무했기 때문에 걱정이 앞서긴 했다.

하지만 참여해서 잃을게 없다는 생각에 일단 신청을했다.

WEB, APP, IoT, Cloud, 인공지능 분야 중에서 CLOUD 분야로 참가했다.

1차예선

내 지식은 거의 평범한 컴공 2학년 학부생 수준이였고 합격할 수 있을까 싶었지만 예상외로 합격하게 되어 운이 좋았다고 생각된다.

이론평가

Cloud 분야는 도커, 쿠버네티스, 리눅스와 관련된 강의를 수강하고 이에 대한 이론평가가 이루어졌는데 온라인 강의에서 학습만 했으면 조금 어려울 정도였다.
도커, 쿠버네티스에 대한 경험도 없고 공부해본적도 없어서 체감상으로는 어려웠다. 다른사람들이 어땠을진 모르겠지만 실제로 도커, 쿠버네티스를 많이 사용해본사람이라면 쉽게 풀 수 있을지도 모르겠다.

정확한 점수는 기억나지않는데 약 70~80점대가 나왔던걸로 기억한다.

코딩테스트

코딩 테스트는 총 4문제가 나왔고 4개중 마지막 제외한 문제들은 풀만한 수준이었다.
3개만 맞췄고 약 200명중 44등했다.
만점은 진짜... 대단한 사람들이 많다👍

개발계획서

2021년 페이스북 페이지 육군훈련소대신전해드립니다에 많은 이슈가 되었던 군내 급식관련 문제를 포인트로 잡아서 개발계획서를 작성했다.
해당 프로젝트에 대한 자세한 내용은 뒤에서...

팀빌딩

다른 부대에있는 대학교에서 같이 공부하던 친구(FE)와 친구의 동기(FE)까지 총 3명이 사전에 팀을 이뤘고, 모집간 다른 팀을 이루고있던 2명(FE, BE)이 참가하게 되었다.

FrontEnd 개발 3명, BackEnd 개발 2명 총 5명이 팀이 되었다.

FrontEnd 개발만 하고 Mock-up Data로만 프로토타입을 만들어 완성할 수도 있었겠지만 BackEnd를 담당하게 된 이상 API를 만들고 DB에 Real Data를 쌓아서 보여주겠다는 생각을 했다.

개발과정

팀명 정하기

개인적으로 어떤 프로젝트를 하던간에 쓸데없이 가장 중요하게 생각하는게 아닐까 싶다 ㅋㅋㅋ

프로젝트 명을 정하는데 약 2일정도 고민했다.
더 나은 병영식당, BTS(아무튼 끼워맞추기) 등등...
그렇게 고민끝에 나온 프로젝트 명은 ArMeal(Army + Meal) '아밀'이라고 읽는다'
나름 만족스러운 이름이다.

로고도 꽤 이쁘게 만들었다.😊

개발환경

개발을 하고싶습니까?🤔
군대 사지방에서는 그 무엇도 할수 없습니다!🤦‍♂️

IntelliJ도 설치할수 없고 SSH로 VM에 원격으로 접속할 수도 없다.

이러한 제한적인 환경을 해결하고자 운영측에서 Github Codespace 환경을 제공해주었고, 이 덕분에 개발간 환경으로 인한 불편함이 많이 해소되었다.

Github Codespace의 대략적인 사용방식은 VSCode와 대부분 유사하고 다양한 Extension을 설치하여 사용할 수 있기 때문에 기본적인 개발을 하는 데 있어 어려움이 없었다.

BackEnd 개발하기

Spring 3를 공부하고 있어서 처음에는 미친척 Spring 3환경을 구축해보려고했다.
하지만 제한된 시간내에 익숙하지않은 환경에 수많은 설정을 구축하기엔 역부족이었다.

하는 수 없이 처음써보지만 설정이 용이한 SpringBoot를 사용해서 개발을 진행했다.
진행 과정에서 약간의 어려움이 있긴 했지만 기본적으로 Spring 3를 다뤄본 경험이 있어서 그런지 할만했다.

프로젝트 진행간 DB설계, API개발, 서버 관리/배포, 영상제작을 담당했다.
개발간 사용한 기술 스택은 다음과 같다.

프로젝트 ArMeal

첫 해커톤이라그런지 군대라서그런지 한달이라는 시간이 생각보다 촉박했다고 느껴졌다.
개인정비시간에 운동만하던 시간도 다 개발하는 시간으로 사용했다.
개발간 팀원간 소통이 원활하게 이뤄져서 개발일정을 맞출수 있었다.

ArMeal의 대략적인 Service Flow는 아래와 같다.

💡Github 주소
https://github.com/osamhack2021/WEB_CLOUD_ArMeal_CSK

🎬시연영상!
https://youtu.be/W26sdeDDbA4

후기

비록 수상은 못했지만 첫 해커톤을 군대에서 했는데 생각보다 수월하게 진행한것 같다.
밖에서는 공부한다, 안될거다, 귀찮다 등등 온갖 핑계를 대면서 회피하던 해커톤이었는데 막상 경험해보니 "생각보다 별거아닌데?"라는 생각이 들었다.
입대 전에 한번이라도 시도해보지 않았던것이 오히려 아쉬울 정도였다.

좋았던 점

  • 새로운/다양한 기술을 접할 수 있었다.

    • 최근에 나온 기능인 Github Codespace 환경을 처음 사용할 수 있었다.
    • SpringBoot를 사용할 수 있었다.
    • JSON 파싱방식에 조금은 익숙해졌다.
    • 이론으로만 공부했던 CORS를 직접 경험해봤다.
  • 자신감이 생겼다.

    • 해커톤 뿐만아니라 여러 활동을 시도하는데 망설임없이 시도할 자신감이 생겼다.
    • 예전보다 강해진 느낌이 든다.
  • 협업과 멘토링을 통해 팀프로젝트 개발 과정에 익숙해질 수 있었다.

아쉬운 점

  • 전체적인 기획은 있었지만 DB설계, API설계를 철저하게 하지 못해 아쉬웠다.

    개발 과정에서 DB구조를 몇번이나 바꾸고... 그에따른 DTO도 변경하고...
    불필요한 소요가 많았다;;;😂
    한마디로 MyBatis를 이용한 SQL에 종속적인 개발에 불편함을 느꼈다. JPA 공부를 시작해야겠다.

  • Codespace에서 간혹 Extension이 적용되지 않는 오류가 있었다.

    Codespace환경은 좋았지만 중간에 알수없는 오류로 Java 라이브러리 import가 자동으로 안되는 대참사가... Extension을 적용시키긴 했는데... 아마 내 설정의 문제였을텐데 이부분은 잘 모르겠다.

  • 멘토링 과정에서 데일리 스크럼(Daily Scrum) 에 대해 알게 되었는데 협업간 이를 적용해보지 못해 아쉽다.

    다음에 기회가 된다면 프로젝트 진행간에 적용시켜봐야겠다.

  • 기본적인 설정 구성에 시간을 많이 할애했다.

    기본적인 설정에 소모할 시간을 절약하기 위해 SpringBoot에 기본적인 설정을 구성한 Repository를 하나 가지고 있어야겠다.😅
    ex) Swagger, Json Parsing, login 등

  • 서버가 24시간 구동되지 않아 서버가 재시작될 때 마다 일일히 배포를 구동해줘야하는 불편함이 있었다. (Nginx, Tomcat)

    VM 부팅간 자동으로 수행되도록 설정하고 싶었지만 잘 되지 않았다.
    이 부분에 대해서는 제대로된 공부가 필요하다.

  • 수상을 못한건 역시 아쉽다 ㅎㅎ😂

잡담

열심히 총대매고 팀장을 맡아 팀원들 모두를 푸시해준 친구 😎
Spring 처음써봐서 아무것도 모르는데도 급하게 따라와준 우리 BackEnd 팀원분 😲
빠른 개발을 위해 열심히 달려준 FrontEnd 팀원분들 😳
무사히 완주해준 팀원들에게 감사의 말을 올립니다 🙏

TMI👀
1. 해커톤한다고 매일 2시간 30분씩하던 운동도 못해서 몸이 근질근질했다.
근손실이 아쉽다
2. 해커톤 중간에 정보처리산업기사 필기시험이 있어서 개발 어느정도 마친 뒤 4일 공부하고 시험보고왔었고 합격했다. 바로 실기시험공부!!😅
4. 개발간에 알게된점이나 기록하고싶은 내용은 시리즈로 게시물을 묶어뒀습니다 구경해주세요~! ^^
5. 발표가 3일미뤄져서 그만큼 설마?하는 기대가 커졌지만 수상을 못해서 아쉬웠다.

🏋️‍♀️이만 저는 운동하러 가겠습니다

profile
안녕하세요 😆

1개의 댓글

comment-user-thumbnail
2024년 4월 9일

군대때 이런걸 했어야했는데 😢

답글 달기