INHA SW NET-Zero 공동해커톤

변현섭·2023년 7월 17일
0

활동 내역

목록 보기
4/9
post-thumbnail

지난 2023.7.13 ~ 2023.7.15일에 공동 해커톤 행사에 참여하였습니다. 활동에 대한 내용을 공유드립니다.

1일차. 아이디어 구상

저희의 1일차 일정입니다. 6.19일 부터 시작한 활동임에도 불구하고 해커톤의 주제는 1일차 자정에 공개가 되었습니다. 미리 주제를 알려주지 않은 이유는 "학생들이 미리 만들어올까봐"였다고 하네요..! 발표된 주제는 아래와 같았습니다.

사실상 자유주제나 마찬가지였습니다. 그래서 저희 팀원 중 한명은 "한달만에 공개된 주제인만큼 뭐 대단한 주제라도 주는 줄 알았다"라고 이야기하기도 했습니다. ^^

일정표에 보면 탄소중립의 이해 특강과 DevOps 특강에 대한 내용이 있습니다. 탄소중립의 이해에 대한 내용은 아래의 포스팅에 정리해두었습니다. DevOps 특강에 대한 내용도 정리를 했었는데, 저장이 안돼서 날아가버렸습니다.. 정작 중요한 건 DevOps 특강이었는데 말이죠.
>> 탄소 중립의 이해 특강

5시 까지는 아이디어 대한 구상안을 제출해야 했기에 서둘러야 했습니다. 급하게 만들다보니 성의있게(?) 만들지는 못했네요.. 해커톤에서 사용한 플랫폼은 Slack이었는데요. 아이디어 노트를 공유해드리고 싶지만, Slack에 올렸다보니 아쉽게도 공유가 안되네요.. 개요만 보세요..!

그리고 어찌저찌 1분 PT 자료까지 타임어택에 성공했습니다.

그렇게 고된 아이디어 회의를 끝내고 잠깐 저녁을 먹고나니 기다리고 있었던 건 코딩테스트.. 넷제로 해커톤을 후원해주신 코드트리에서 진행하는 테스트가 있었습니다. 저는 백준만 알고 있었는데 오히려 코드트리가 백준보다 더 좋은 거 같기도 해요. 광고 아닙니다 ㅎㅎ 코딩테스트 결과.. 전체에서 11등을 했습니다. 중요한 건 몇명 중에 11등인지 모르겠어요 ㅋㅋ 이게 필수는 아니었거든요. 그래도 대충 20개의 팀이 참여했고, 한팀당 5명씩 있으니까 60명 정도는 참여하지 않았을까.. 뭐 그렇게 생각할게요 ㅋㅋ

2일차. 본격 해커톤


저희의 2일차 일정입니다. 원래 일정은 1시부터 시작이지만, 1시부터 바로 발표를 해야하기 때문에 저희 팀은 2시간 일찍 모였어요. 근데 저희가 행사를 진행한 인하대학교 60주년 기념관에서 진행 중인 또 다른 행사가 있더라고요.

1일차에 1층과 14층 중에 회의실을 추첨했는데, 14층을 뽑아버렸어요.. 막상 오늘 와보니 1층은 너무 시끄러워서 정신이 없더라고요.(심지어 그 다음날까지 진행하는 행사였습니다..) 오히려 14층을 뽑은게 더 잘된 것 같기도 해서.. 팀원에게 자랑 아닌 자랑을 좀 했습니다. 염치불구하고요..! 근데 그걸 또 받아주는 착한 팀원..

팀원 중에 점심을 안 먹고 온 사람이 있더라고요. 왜 안 먹었냐고 그러니까 아이디어 스케치 발표 옆에 샌드위치가 그려져있길래 줄 거 같아서 안 먹고 왔대요 ㅋㅋ 근데 진짜 샌드위치 주더라고요 ㅋㅋ

어쨌든 발표는 시작되었고, 현장에 참여해주신 AWS 현직 멘토님들의 피드백을 받을 수 있었습니다. 피드백 내용은 아래와 같았습니다.

  • AWS의 어떤 기술을 사용할 것인지 구체적으로 안 나타나있다. 기술 스택에 제한을 두지말고 언제든지 멘토에게 문의해라.
  • 기능 간의 중복이 많다. 기능의 축약이 충분히 가능해보인다. 그리고 목적을 명확히 해라.
  • draw.io에 가서 프로젝트 아키텍쳐를 먼저 설계해보는 게 좋아보인다.

원래 같으면 이제 구상한 아이디어를 기준으로 개발을 시작해야 하는데, 저희 아이디어에 허점이 너무 많았다고 해야할까요? 개발을 시작하는 것보다 아이디어의 완성도를 높이는 데에 많은 시간을 써버리고 말았습니다. 사실 탄소중립을 실현하는 애플리케이션을 만드는 일이 쉬운 일이 아니잖아요. 그러다보니 저녁 먹을 때까지 아이디어 구체화만 했던 것 같아요. 그래서 말인데 좀 뜬금 없지만 저희 저녁 보실래요?

스폰지밥 도시락이 나왔어요 ㅎㅎ 생각보다 고퀄리티의 도시락이었어서 맛있게 먹었습니다. 참고로 저 샌드위치는 저녁으로 나온게 아니라, 아까 1시에 받은 그 샌드위치를 아직도 안 먹고 남겨놓은 거에요 ㅋㅋ 간식이 워낙 많으니 샌드위치를 못 먹고 있었네요.

이제 저녁 먹고 개발을 시작하려는데, 이번에는 아이디어를 나타낼 수 있는 간단한 스케치를 그려달라고 하네요. 이건 평가에 반영되는 사항은 아니었습니다. 배스킨라빈스 상품권이 걸려있긴 했지만요. 저희 팀은 아직 개발을 시작도 못했기 때문에 후딱 그린 후 제출했습니다. 한창 바쁠 때라 그런지 사진을 못 찍었네요 ㅠㅠ

근데 이번에는 또 본인의 팀을 나타내는 깜찍한 이모티콘을 보내달래요 ㅋㅋ 개발 언제해.. 그래도 하라면 해야 되기 때문에 이모티콘도 제출했습니다.

저희 팀에 짱구를 좋아하는 팀원이 2명이나 있더라고요. 팀 회의를 위해 Notion을 사용했는데, 한 분은 프로필이 짱구였고, 한 분은 유리였어요 ㅋㅋ 그래서 나온 짱구 이모티콘입니다. 참고로 혁명은 아이디어 스케치할 때 넣은 키워드였어요. 짱구만 있으면 좀 심심하니까 우리만의 키워드도 넣어주었습니다.

자 이제 개발 시작해볼까? 하니까 이번에는 치킨이 도착했어요. 개발을 하라는건지 말라는건지 ㅋㅋ 진짜 큰일 났다 이거. 그래서 저희 팀은 치킨을 거의 못 먹고 개발에 집중했습니다. 어쩔 수 없었죠. 치킨을 마다하고 일을 한다? 저희 팀의 열정을 다 보여드리기에 충분하다고 생각합니다. (실제로 치킨은 거의 70~80% 정도 남았어요)

근데 개발에 있어 두가지가 골칫거리였는데, 첫번째는 학교에서는 RDS 접속이 안된다는 것이었습니다. 이건 RDS를 좀 다뤄보신 분들은 다 아실텐데요. RDS가 보안이 워낙 강하기 때문에 공공 IP에서는 접속이 안됩니다. 사실 이 부분은 제가 해커톤 참여하기 이전부터 걱정이 많이 되었던터라 Slack으로 멘토님께 여쭤봤는데요. 대회 당일에 질문 요청하면 해결해주시겠다고 해서 마음 놓고 있었거든요.

근데 멘토님이 주신 답변은 가히 충격적이었습니다. 로컬환경에서 RDS에 접속하는 건 어렵고, EC2로 우회 접속하라는 것이었어요. DB 접근은 되는데.. 이게 API 한번 테스트 해보겠다고 서버에 올리는게 얼마나 귀찮은지 아세요? 그러다 코드에 뭐 잘못된 부분있어서 에러나면 얼마나 울고 싶은지 아세요? 진짜 로컬에서 테스트할 수 있는게 이렇게 좋은거였나 싶더라고요. 안그래도 잠도 못자고 예민한데 열이 너무 받더라고요 ㅎㅎ

두번째로 골칫거리는 인공지능 담당하시는 팀원과 서버를 담당하는 제가 서로의 분야에 대해 너무 모른다는 것이었어요. 각자가 본인 파트에 대해서는 전문가지만, 서로의 분야에 대해서는 잘 모르다보니 합을 맞추기 어려웠습니다. ㅠㅠ 인공지능을 담당하셨던 팀원분께서 AWS의 Textract를 이용해 전자기기의 에너지 소비효율등급표에서 모델명을 추출하는 코드를 완성시켰습니다.

저는 공공데이터포털에서 가전기기의 정보를 가져와 DB에 넣고 모델명을 입력하면 해당 가전기기에 대한 정보를 반환하는 API를 개발했습니다. 이제 제가 개발한 코드와 인공지능 담당 팀원분께서 개발하신 코드를 합쳐, 사용자가 사진으로 가전기기의 에너지 소비효율 등급을 촬영하면, 모델에 대한 정보가 출력되도록 만들려고 하였습니다.

어? 근데 어떻게 주지? ㅋㅋㅋㅋㅋㅋㅋㅋ 프론트 쪽에서 카메라를 열어서 사진을 찍으면 서버가 받아서 AWS S3에 업로드합니다. S3에 업로드한 사진을 받으면 인공지능 쪽에서 모델명을 추출하고 다시 서버에게 돌려주어야 하는데.. 서버와 인공지능이 어떻게 소통할 수 있는지 모르겠더라고요.

결국 멘토님께 긴급 SOS를 쳤고, 저희가 들은 답변은 S3에 자동 트리거 되는 람다(서버리스 컴퓨팅)를 사용해보라는 것이었고, 이를 SQS(메시지 큐)랑 연결지어 보라는 것이었습니다. 하지만, 뜻대로 잘 안되더라고요.. 람다고, SQS고 써본 적이 없다보니 뭘 어떻게 주고받는지 모르겠더라고요. 일단 보류해두기로 하고 각자 해야 할 다른 일을 진행했습니다.

3일차. 결과 발표

밤을 새는 컨텐츠이다보니 2일차와 3일차의 경계가 살짝 모호하네요. 공공데이터 포털에서 제공하는 가전제품의 정보로 DB를 구축하는 것까지는 완료했는데, 현재 가전기기 테이블에는 가격 필드가 포함되어 있지 않았습니다.

하지만 저희 어플리케이션에서는 사용자에게 금전적인 이점도 계산을 해주어야했기 때문에 인공지능 담당 팀원분께서 가격을 크롤링해주셨습니다. 그리고 자체 점수도 특정 기준에 맞게 산출해주셨습니다. 그 결과 아래와 같은 엑셀 시트가 완성되었어요. 인공지능 담당팀원 분 너무 멋있더라고요..

인공지능 담당 팀원분께 이 엑셀시트로 받은 후 이를 DB에 등록하기 위해 제가 어떻게 했게요? 정말 바보같게도 손수 변환 코드를 짰습니다 ㅋㅋ

API를 실행하고 Json으로 잘 변환된 것을 보고 뿌듯해하는 저를 보며, 인공지능 담당 팀원분께서 말씀하셨어요. csv파일 Json으로 변환하는 건 웹 사이트에서 하면 된대요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 너무 죄송하더라고요. 검색해보니까 바로 나오네요.. 쩝

코드에 대한 내용은 다음 포스팅에서 자세히 다루기로 할게요. 에어컨, 냉장고, 세탁기, 김치냉장고 총 4종류의 가전기기 데이터를 Json으로 변환해 DB에 등록하였습니다. 그 후 기초적인 API 작성도 마쳤습니다.

그러니까 오전 8시가 됐어요. 대회 운영진분들께서 핫식스를 주더라고요 ㅋㅋ 많이 피곤해보였나봅니다. 이제 다시 인공지능 팀원분과 합을 맞춰보려 노력했습니다. 인식한 모델명을 서버로 넘겨주기 위해 별짓을 다해봤습니다. Jython이라고 해서 제 자바 코드에서 파이썬 파일을 실행시키는 방법도 써봤는데 잘 안됐어요.

거의 한 4시간 정도 고민 고민해보다가 시간도 다 됐고해서 그냥 합치는 건 포기했습니다..ㅠ 어쩔 수가 없었어요. 1시까지 발표 자료를 준비해야 해서요. 서둘러 발표 준비를 하였고, 그렇게 발표시간이 되었습니다. 발표자료 제출 직전까지 바쁜 우리 팀원들의 뒷모습을 혼자 한가한 제가 찰칵했습니다.(저 빼고 다들 바쁘네요. 참 못난 팀장입니다 ㅋㅋ)

그렇게 완성된 저희의 발표자료도 너무 공유해드리고 싶지만.. ppt 파일도 벨로그에서는 공유가 안되는 관계로.. 아래의 링크에서 미리캔버스로 작업하던 내용을 확인해보실 수 있습니다.(완성본과는 다소 차이가 있으니 양해 바랍니다!)
>> 발표자료

드디어 발표시간이 되었습니다. 발표순번도 팀장인 제가 뽑았는데, 뽑은 숫자는 19였습니다.. 난 왜 이렇게 운이 없지.. 그래도 팀원들은 19번이 딱 좋다고 했습니다. 정말 착한 팀원들이에요 ㅠㅠ(19번이 어떻게 딱 좋아..)

거의 2시간 30분 정도 시간이 지난 뒤에야, 저희 팀의 발표가 시작되었습니다. 밤을 샜던 터라 다른 팀 발표할 때는 조금 졸았는데, 저희 팀 발표 차례가 다가오니까 눈이 떠지더라고요 ㅋㅋ 아래 사진에서 옥에 티를 찾아보세요.

디자이너분께서 많이 피곤하셨나봐요. "역할 곽수연", "역할 양원철" ㅋㅋ 저는 "팀장 Server"라고 적으셨네요. 서버 개발자도 아니고 ㅋㅋ 정작 본인만 UX UI Designer로 잘 적으셨습니다.

저희의 애플리케이션 Demo영상도 올리고 싶은데 Velog는 동영상 업로드는 지원하지 않는가 보네요.. 아쉽네요,, 아무튼 그렇게 저희의 3일 동안의 해커톤이 드디어 막을 내렸습니다. 안타깝지만 수상은 하지 못했습니다.

상까지 받았으면 참 좋았을텐데. 그래도 너무너무 재밌는 시간이었고, 너무 좋은 팀원들과 함께 작업할 수 있었던 좋은 기회였습니다. 대회에 참여했다기 보단 정말 수학여행 갔다온 기분이었어요. 만약 해커톤 참여를 망설이는 분이 계신다면, 전 정말 강추하고 싶습니다. 진짜진짜 재밌어요. 추억도 많이 남고요.

마지막으로 사진 몇장 첨부하고 포스팅 마치겠습니다. 감사합니다.



profile
Java Spring, Android Kotlin(Java), Node.js, React.js 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기