티스토리 뷰

728x90

1. 해커톤 운영

AWS 리빙랩 글로컬 해커톤은 나에게 많은 의미가 있는 해커톤이다.

내가 속한 학교에서 주도적으로 준비해서 시작하고 계획하게 된 해커톤이었는데, 그 과정에서 학교 직원분과 교수님과 소통하며 해커톤 준비에 참여하며 활동했기 때문이다.

직원분은 개발 쪽을 모르셔서 업체나 섭외 등에 대해서 많이 물어보셔서 도움을 드리고 참여하며 재밌는 활동이었다. (사실 학생 입장이기에 하고 싶은 건 너무너무 많아서 다 얘기했다가 반려된 의견이 50% 이상이지 않나 싶긴 하지만, 제일 원했던 서울에서 진행하는 것과 라인업은 만족을 넘어 기대 이상이었기에 진행할 수 있도록 지원해 준 학교와 교수님, 직원분께 감사하고 있다...🙇👍👍ㅎㅎ)

학교와 Linc 3.0에서도 아낌없이 경비를 지원해 줘서 과분하게도 AWS가 섭외?되어 AWS와 코드 스테이츠, 네이버 등 개발자라면 누구나 알만한 빵빵한 라인업의 해커톤이 개최되게 되었다.

당연히 담당하셨던 '✨김범준 교수님✨'께서 제일 고생하셨지만, 옆에서 직원분과 교수님을 도와드리며 많은 부분을 배우기도 했다.(거의 2-3개월 정도 해커톤에 대한 얘기를 했던 것 같다ㅋㅋ 누구보다 고생해 주신 김범준 교수님께 감사인사를 올립니다...! 👍 )

해커톤을 계획할 때는 내가 강력하게 서울로 가서 진행하자고 주장했다. 지방에서 개발하며 느낀 점은 주변 환경도 나에게 어마어마한 영향을 준다는 것이었고, 서울이라는 지역에서 진행되었을 때 당연히 라인업 등에서 엄청난 이점이 있다고 생각했기 때문이다. (해커톤을 준비하며 다른 행사에서 만나 뵀던 AWS Solution Architect분과 여러 개발자분들께 섭외 연락을 돌렸었는데, 대부분 지방에서 진행하면 참가가 어렵다는 답변을 받았고 수도권에서 진행할 경우엔 일정이 맞으면 참가할 수 있다는 답변을 많이 받았다.)

사실 서울로 가게 되면 예산이 훨씬 많이 소비되고 부수적으로 퀄리티도 올라가야되므로 +@ 가 아주 커짐에도 불구하고 밀어주고 예산을 지원하고 운영할 수 있게 도와주신 많은 분들께 감사하고 있다.

이런 여러 가지 이유로 나에게 아주 의미 있는 해커톤이었다.

 

2.❓AWS 리빙랭 글로컬 해커톤이란❓

LINC 3.0 참여학과를 대상으로 1월 24일 ~ 1월 26일, 1박 3일 간
ART 협력 대학(강원대, 경상국립대, 서울과기대, 연암공대, 인천대) 주관, 연암공대 주도로
AWS/코드스테이츠/네이버 주관 기술교육과 특강을 수강 후 무박 2일 동안
'지역사회 문제 해결'을 주제로 진행하는 해커톤이다.

 

 

3.🏫사전 OT

012345

 

사전에 진행된 온라인 OT에서는 행사에 대한 설명(주관이 어디고 어떤 형식으로 행사를 진행하는지 등)에 대해 들었고, 팀 구성 방법, 일정, 시상에 대해 들었다. (나는 OT 일정을 전달받지 못해서 다른 친구가 얘기해 준 것을 들었다.)

 

1) 👨‍👩‍👦‍👦팀 구성

팀은 사전에 구성해도 되고, 24일 저녁 팀 빌딩 시간에 서로 얘기를 나눈 후 구성해도 된다고 전달받았다. (실제 진행에서는 사전 팀 구성을 오히려 전부 따로 팀을 구성하고 랜덤으로 팀을 구성해서 진행했다. 밑에서 상세하게 썰을 풀겠다..)

2) 📅일정

첫 날 오후부터 교육을 진행하고, 저녁에 팀 빌딩 시간을 갖고 첫날은 종료된다.

둘째 날은 오전, 오후 교육을 진행하고 19시부터 무박 해커톤이 시작되어 다음 날 종료되는 일정이었다.(실제론 2시간가량 밀려서 피곤해서 죽을 뻔했다 ㅋㅋ)

3) 🏆시상

상 별로 1팀 씩 총 3팀 수상하고, 대상(150만원)/최우수(120만원)/우수(100만원) 이다.

 

 

4. 🏁해커톤

행사 운영

 

실제 행사 운영 일정표이다.  1월 24일 ~ 26일 3일 간 진행되고, 특강과 교육을 거친 뒤 2일 차 저녁부터 3일 차 오전까지 해커톤을 진행하는 일정이었다.  위에서 잠시 얘기했듯이 기존 팀은 전부 따로 분리하고 그 외에는 수준을 고려해서 랜덤으로 팀을 짜주셨다.

팀원 수준 고려할 때는 본인이 직접 자신의 스펙과 개발 능력 등을 아래  팀 빌딩에서 나오는 표에 작성하고 이를 바탕으로 했다고 한다.

 

1일 차 - 교육

김병준 멘토님께서 Gen(AI)와 AWS 전반적인 내용들에 대해서 강의해 주셨다. 이후

App/Web(Cloud Base로 개발) -> DevOps(확장) -> DataOps(데이터 분석) -> SecOps(Cloud 환경 기반에서 데이터 보안) -> MLOps(Cloud 기반 AI/ML)

순서에 대해서도 알려주셨다. 이 부분이 제일 기억에 남았다. 회사가 어느 레벨에 있는지, 어느 레벨의 개발자가 필요한 지에 따라 회사에서 뽑는 사람이 달라지고 내가 갖춰야 할 역량도 달라질 수 있다고 생각했다. 당연히 어느 정도 최신 트렌드의 영향도 있고, 트랜드의 변화도 알 수 있게 될 것이다.

1일 차 - 팀빌딩

 

다들 직접 작성하다 보니 실제 팀 빌딩에서 문제가 몇 가지 발생했었다. 아마, 고스펙의 참가자들이 빨리 작성해서 그런지 다들 본인의 역량에서 조금은 과장되게 적은 느낌이 있었다. (너무 과열되어 뒤떨어지면 안 된다는 생각에 그렇게 되지 않았나 싶다.) + 나도 제대로 된 개발에 발을 들이기 전에는 내 수준을 제대로 파악하지 못했던 것처럼 다른 친구들도 이런 과정이지 않나 싶다.

발생했던 문제는 여러 가지 있는데, 실제 팀 빌딩 후 어느 팀에는 프론트만 3명이고 서버 개발자가 없거나, 서버 개발자만 여럿인 경우 등이 발생하게 되었다 ㅋㅋ

(우리 팀도 3명이 프론트였는데, 2명이 예제 수준 정도까지만 해봤다고 하여 역할 분배부터 시작했다.)

01

음.. 팀이 빌딩 된 후 개발 경험과 적극적인 성격으로 내가 팀장을 맡기로 했다. 처음으로 했던 일은 각자 할 수 있는 능력을 솔직하게 작성하고 파악하는 것부터였다. (그래야 우리가 진행할 프로젝트의 규모를 결정하고 도메인이나 활용 스택을 결정할 수 있다고 생각했기 때문이다.)

android는 단독으로 하기 힘든 데다 예제 수준 정도로 할 수 있다고 하여 제외하기로 하였고, 다들 파이썬을 알고 있다고 하고 나도 파이썬은 적당히 할 수 있어서 streamlit으로 간단하게만 프론트를 구현하기로 하였다.

백엔드는 spring boot(java)로 내가 단독으로 구현하고 최대한 빠르게 mvp만 끝내고 다른 팀원들 코딩을 도와주기로 했다.

그리고 간단하게 내일 주제가 나오면 바로 할 수 있도록 팀 규칙과 to-do list 등 팀 캔버스에 프로젝트에 사용될 문서를 간략한 버전으로만 작성하였다.

 

우리 팀 로고다. 팀원들의 학교 이니셜을 땄는데, 경상국립대가 G인데 그냥 어감과 느낌이 K가 더 좋아서 K가 됐다 ㅋㅋ

2일 차 - 교육

1) 3 Tier Architecture 형식의 학습 기록 애플리케이션(feat. ChatGPT)

 

3 Tier Architecture를 배우고 이를 활용해서 학습 기록을 남기는 애플리케이션을 만드는 실습이었다.

이후에는 ChatGPT를 활용해서 학습한 내용에 대해 피드백을 받는 것까지 만들었다. (API Key는 AWS에서 제공해 주셨다!)

 

 

이게 2일 차 첫 강의에서 만들어지는 최종 아키텍처였다.

React로 프론트를 구성하고 S3를 통해 정적 페이지로 배포하는 방식이고, Lambda를 활용해 GET(채팅 내역 가져오기)/POST(GPT의 채팅 내용 저장), EC2에 Express로 만든 백엔드 서버(사용자 채팅 CRUD)를 구동하는 방식이다.

EC2는 Cloud9로 접속해 사용하는 방식을 사용하고 학습이다 보니 모든 서비스와 인바운드 규칙은 public(모든 ip에서 접근 가능)으로 했다.

S3에 React를 배포하는 건 엄청 재밌었다.

나도 프론트를 개발할 때는 React를 사용하는데, 이전에는 EC2를 2개 사용해서 SpringBoot 백엔드용 1개, React 프론트 배포용 1개 사용했었다. 이렇게 사용하니 EC2를 2개 관리해야 한다는 점에서 관리가 번거로운 점도 있었고 사용 시간이 2배로(EC2가 2개 구동) 적용되어 비용적인 측면에서도 비효율적이라서 고민이었는데, 해커톤 참가하기 얼마 전 S3와 CloudFront를 사용해서 React를 배포하는 방식을 봤었는데 그때는 엄청난 충격을 받았었다.

이후 React를 S3로 배포하는 방식을 공부했었는데, 실제로 AWS에서 교육할 때 이 부분을 보고 제대로 공부했다는 생각에 뿌듯함이 들었다 ㅋㅋ

 

2) 기타 교육

3 Tier 외에도 Gen AI 사용하는 여러 방법과 예시, Streamlit 사용방법(이 교육 때문에 프론트 하는 친구에게 streamlit 사용법을 처음부터 알려주지 않아도 괜찮아서 다행이었다...!ㅎㅎ), AWS 내의 ML/DL 등에 대해서 배웠는데, 해당 내용을 다 적기에는 너무 양이 많고 솔직하게 내가 이해를 모두하고 있는 것이 아니라 옳지 못한 내용을 전달할 위험이 있어 적지 않겠다.. (3 Tier는 평소에 공부하던 내용이라 괜찮지만 다른 내용은 처음 보거나 제대로 모르는 것들이라 쓰기에 부담이 됩니다...ㅋㅋ)

 

2 ~ 3일 차 - 👊해커톤 시작👊 (2일 차 19시 시작!)

1) 주제 선정

우선 주제를 선정하는 것이 제일 중요하기에 시작과 동시에 주제에 대한 얘기부터 나눴다.

기본적으로 각자 돌아가며 1개씩 의견을 내고, 더 생각나는 의견을 냈다.

이 과정으로 총 14개의 의견이 나왔다. 여기서 1차적으로 의견 별로 번호를 붙여서 2개씩 뽑고 뽑히지 않은 주제는 제외시켰다.

 

이후 두 번째로 투표를 하기 전 선정된 [2, 4, 7, 10, 11, 13]번의 주제에 대해서 각자 생각하는 단점과 장점, 심화 아이디어 등을 얘기하는 시간을 가졌다. (해당 과정을 통해서 단순하게 해당 의견만이 아닌 확장하여 실제 프로젝트를 진행했을 때 어떤 의견을 넣고 싶고, 빼야 할 것이 있는지, 비즈니스 모델은 괜찮은지 등에 대해서 이야기를 나눴다. 이렇게 하면 프로젝트 진행 시 각자 개발 중 서로 잘 못 이해하고 있거나 불만이 있을 수 있는 부분을 미리 나눌 수 있다고 생각했기 때문이다.)

그다음으로 다시 1표씩 행사해서 가장 많은 득표를 가진 주제를 뽑기로 했다. (만약, 뽑은 주제가 과반수가 넘지 않으면 상위 2개만 놓고 다시 투표하기로 했다.)

그렇게 해서 최종적으로 선택된 주제는 [약관 요약]이었다.

 

맨 처음 나온 주제는 GPT를 활용해서 사회적 약자를 위한 문서 요약이었지만, 이를 듣고 내가 문서 요약은 많으니 약관이라는 도메인으로 집중해서 약관 요약을 해주는 것은 어떠냐고 의견을 내는 것을 시작으로 이렇게 결정되었다. (c에 적힌 내용이 위에서 심화 아이디어 내는 부분에서 내가 건의한 해당 내용이다.)

2) 기술 스택 선정과 역할 분배

주제가 결정된 후 기술 스택을 선정하고 역할을 분배하는 시간을 가졌다.

나는 팀 내에서 프로젝트와 개발 경험이 제일 많아서 백 엔드와 DevOps 부분을 다 맡아서 하기로 해서 Spring Boot(Java)와 DB 모델링과 아키텍처, AWS 아키텍처를 맡기로 했다. 그리고 틈틈이 다른 팀원들의 개발을 도와주는 역할도 했다.

구재윤, 김도윤, 백승엽 팀원이 Front를 신청했었는데, 김도윤 팀원과 백승엽 팀원은 예제 정도 수준의 프로젝트를 진행해 봤다고 하여 프론트 개발을 하기에는 어려움이 있다고 생각하여 다른 역할을 하기로 했다.

구재윤 팀원은 개발을 해보긴 했으나 바드 AI에 의존성이 조금 강해서 내가 틀을 잡아주고 옆에서 계속 서포트해 주면서 Streamlit으로 프론트를 맡기로 했다.

변해린 팀원은 ML, DL 경험이 꽤 있고 python과 기본적인 react(JS)를 할 수 있다고 해서 ML, DL을 맡고 ChatGPT의 프롬트르 엔지니어링과 튜닝을 도와주기로 했다.

개발 부분에서는 나에게 많이 분배되어 있다. 사실 개발 부분에서는 내가 많은 부분을 맡긴 했다. 하지만, ML과 DL, ChatGPT 부분과 AWS lambda 실제 구현 등은 변해린 팀원과 김도윤 팀원이 많이 했다. 개발 경험이 내가 많아서 짧은 시간에 완성해야 하는 해커톤의 특성 상 서로 할 수 있는 역할에 충실하게 수행하기로 했다.

실제로 우리 프로젝트에서 ChatGPT의 Prompt 튜닝이 아주 큰 부분을 차지했기에 이 부분에서 김도윤, 백승엽, 변해린 팀원이 10시간이 넘도록 수정하고 설계해 줬기에 내가 맡은 부분에만 잘 집중할 수 있게 해줬던 것 같다.

밑에서 자세히 서술하겠지만, 그 덕에 팀원의 역량을 제대로 파악하고 적재적소에 자신의 역량을 사용할 수 있도록 잘 분배하는 것도 프로젝트를 진행하는 데 있어서 중요한 과정이라는 것을 깨달았다.

3) 📋To-Do List 작성

팀 규칙에도 적혀있을 만큼 중요하게 생각했던 것이 의사소통이었다. 짧은 시간 진행하는 만큼 살짝 다른 방향으로 나가는 것도 치명적일 수 있기 때문에 1시간에 한 번씩 슬랙을 확인하고, 본인이 하는 일은 작은 일이라도 무조건 To-Do List에 작성하기로 했다.

이를 바탕으로 서로 막히는 부분을 확인하고 진행 상황을 공유할 수 있도록 했다. 작성 시에는 본인 이름과 우선순위(p1~5)를 함께 작성해서 일정을 조율하는 데에도 활용할 수 있게 했다.

 

4) 🏃진행

4-1) Flow 차트 작성

개발에 100% 집중하기보다는 프로젝트 전체적인 수준을 높이는 것이 더 중요하고 MVP 모델을 구현하는 것이 목표이기 때문에 우리 서비스에 핵심이 되는 채팅(약관 입력)을 통해 GPT를 사용해서 요약된 약관을 받는 기능만 구현하기로 했다.

정석적인 Flow 차트라기엔 없어야 할 내용도 있긴 하지만, 시퀀스 다이어그램같이 자세하게 그릴 시간이 부족하고 팀원들이 보기에 Flow 차트 형식이 편할 것 같아서 Flow 차트 형식에 전체적인 로직을 작성해 주었다.

 

4-2) DB 구현

01

DB는 정규화를 진행하고 설계를 제대로 해야 하는 것이 맞지만, 내가 MyBatis를 사용하고 프론트를 하는 팀원이 join이 많이 일어난 데이터를 다루기 어려울 것 같다고 하여 아주 단순하게 로그인을 위한 user와 채팅 내용을 저장하는 chat 테이블만 구성하게 되었다...

처음 버전에서는 bad_score가 없었는데, 프로젝트를 진행하다가 '약관의 불리함 정도'를 나타낸 점수를 표시해야 한다는 것을 내가 누락해서 추가 했다. (이는 2차 회의 때 발견해서 바로 수정했다. 이런 경우처럼 1시간에 한 번 리뷰를 진행하는 것이 아주 도움이 되었다!😎)

 

4-3) AWS

AWS 아키텍처는 굳이 힘을 줄 필요가 없다고 판단해서 가볍게 가져갔다. 개발적으로 높은 퀄리티를 가져가는 것보다 다른 부족한 곳을 채워서 전체적인 서비스 퀄리티를 높이는 게 중요하다고 생각했기 때문이다.

또한, 고수준의 아키텍처는 현재 서비스에서는 돼지 목에 진주목걸이였기에 private으로 나누는 작업도 하지 않았고, public으로 작업했다. (그래서 bastion host를 두거나 하지 않다)

사용자는 프론트(Streamlit - EC2)에 접속해서 Lambda에 직접 요청하거나 서버(Spring Boot - EC2)에 요청해서 데이터를 가져왔다.

ChatGPT 4.0 API를 사용했고, 질문용 Lambda와 RDS에 답변 저장하기 위한 Lambda 두 개를 사용했다.

RDS를 고집할 필요가 없어 NoSQL을 사용해도 됐지만, 나도 NoSQL은 익숙하지 않고, 다른 팀원들이 아예 몰라서 그나마 익숙한 RDS에 저장하는 형태로 가져갔다. (DB 구조가 단순해서 관계형을 사용할 필요가 없어 속도가 빠른 NoSQL을 사용하고 싶긴 했다.)

 *참고로 나중에 대회가 끝난 후 아키텍처는 더 높은 퀄리티로 바꿔서 운영해보기도 했다.

 

5) ✅프로젝트 마무리

 

약 10시간 안에 DB 짜고, 서버 구현하고, AWS 아키텍처 짠 후 구현한 다음 다른 팀원들 개발 도와주는 것까지... 너무 힘든 하루였다...

그래도 너무 보람찬 시간이었다. 다른 팀은 개발이 완료되지 않은 팀도 있었고, 실제 발표 때 동작하지 않은 팀도 있었지만, 우리 팀은 이를 대비해서 미리 영상도 찍어두고 대비를 철저하게 했다.

 

5. 🎤발표

0123

발표는 센터필드 18층에서 진행하기로 되었는데, 딜레이되어 점심 이후에 발표 시간이 잡히게 되어 기다리는 데 너무 힘들었던 기억이 있다. 점심 식사도 나왔는데, 먹으면 졸 거 같고 발표할 때 집중이 안 될 것 같아서 안 먹고 버텼다.

우리 팀 발표는 3번째였는데, 오히려 빨리 끝나서 마음은 편했다...!

발표 전 질문이 어떤 게 들어올지 모르기 때문에 딜레이된 김에 팀원들이 했던 모든 자료를 다시 정독하며 예상 질문을 뽑아서 팀원들에게 답변이 어떤지 물어보는 시간도 가질 수 있어서 나쁘지만은 않았다.

심사위원은 교수님들과 AWS 개발자분들, 멘토님들이 해주셨는데 발표할 때 심사위원분들과 다른 팀원들의 반응이 꽤나 좋았다.

한 팀원은 발표가 끝난 후 상은 무조건 받을 것 같다며 좋아했던 것도 기억에 남는다 ㅋㅋ(너무 순수하게 좋아해서 귀여웠다 ㅎㅎ)

 

6. 🎉결과

0

발표가 모두 끝난 후 잠시 쉬는 시간이 흘렀다.

쉬는 시간 동안 다른 참가자들 사이에서도 어느 정도 순위가 나온 상태였다.

그래도 결과가 나오기 전까지는 알 수 없으니 마음 졸인 상태로 결과 발표를 기다렸다.

발표 후 우리 팀은 최우수상을 수상했고, 팀원들끼리 고생했다고 서로 다독이며 AWS 로고 앞에서 팀 단체 사진도 찍었다.ㅎㅎ

상금 120만원은 나눠 가졌고, 부상으로 3개월 간 AWS 이용권을 얻었다. (AWS 이용권은 AWS 공부랑 DevOps 공부에 많은 도움이 됐다ㅎㅎ Solutions Architecture 자격증도 공부해서 5월 중으로 취득 예정이다 ㅎㅎ)

 

7. 😎마무리

 

사실 글 작성을 계속 미뤘던 이유가 기념품을 챙겨주신다고 하셔서 배송받으면 같이 올리려고 기다렸었다.

생각보다 기념품이 늦어졌고 추가로 정처기 공부로 인해 이제야..ㅎㅎ 작성하게 되었다.

인생 첫 해커톤은 이렇게 끝이 났다.

이 해커톤을 기준으로 여러 행사와 컨퍼런스 등에 참여도 많이 하게 됐고 아주 의미 있었던 활동이라고 생각한다.

728x90

'기타' 카테고리의 다른 글

2024 인프콘 참여 후기  (0) 2024.08.04
2024 DND 해커톤 후기  (0) 2024.05.29
AWS Student Community Day 2024 연사 참여  (0) 2024.05.26
프로그래머스 코딩 테스트 사전 테스트  (0) 2023.01.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함