안녕하세요 아해팀 노성현입니다
이번 포스팅에서는 아해팀의 가장 중요한 행사인 해커톤을 지난 8월에 진행하였기에 내용을 공유하고자 합니다
해당 포스팅은 기술문서는 아니기 때문에 편하고 가볍게 작성되었습니다
뭘 배우시려면 다른 기술 포스팅을 보시길~ 권장합니다
매년 아해팀은 아이디어를 하나 선정하여 하루이틀동안 모여 소프트웨어를 통해 해결해보는 해커톤 행사를 진행하였습니다
올해도 어김없이 해커톤을 진행하였는데요
저희의 처음 계획은 3월에 진행했던 아해팀의 1차 공개세미나와 7월에 진행하려고 했던 2차 공개세미나에서 발표한 기술들과 평소 관심 있어하는 여러가지 기술들을 조합하여 해커톤에서 사용하려고 했습니다.
나름 성공적이였다고 기억되는 1차 세미나에서는 Reactive, Spring Batch, Spring과 Reflection과 같은 기술들을 공유했었습니다
포스팅 작성자인 제가 발표했던 Reactive같은 경우에는 얼마 뒤 토비님이 Spring Camp에서 발표할 예정이였었는데 의외로 나름 관심을 많이 가져주셨습니다 (감사합니다 ^^)
1차 세미나를 통해 팀에 가입해주신 분들도 생기고 2차 스터디 밑 세미나를 진행하였습니다.
잡혔던 주제를 보면 Spring이 올라가는 원리, 빈이 등록되는 원리같은 스프링 기본도 있었고요, 자바 가비지와 같은 나름 기본적이면서 어려운 것도 있었고, 하둡과 빅데이터를 설명해주는 세미나 등으로 해서 다양한 주제들이 있었습니다만~
발표 일주일 전까지 많은 분들이 신청을 해주시지 않아서 아쉽게 취소가 되버렸습니다
(후일담을 말씀드리면 취소 한 다음날부터 어떻게 신청해야 하냐는 문의 메일과 문자가 저에게 쏟아졌습니다… 그냥 할걸 그랬어요)
신청해주셨던 분들에게 문자와 메일로 사과를 드렸지만 다시한번 여기서 세미나 취소에 대해 사과 드리고요
(돈도 내셨는데… 죄송합니다)
다음에 팀의 행사가 잡힐경우 어떤 식으로든 꼭 초대를 하도록 하겠습니다
행사가 취소되여 신청자분들에게는 아쉬움이 남으셨겠지만
발표가 예정되어 있던 팀원들은 엄청난 긴장감에서 해방되며 몇주동안 발표준비에 쌓여있던 스트레스를 덜어내는 효과가 있었습니다
이때다 싶어서 얼마 지나지 않아 바로 해커톤 일정을 잡았고 (갑작스럽게 잡힌 해커톤 행사에 당황한 멤버들…)
해커톤 준비를 시작하게 되었습니다
가장 중요하게 결정해야 했던것은 해커톤에서 무엇을 만들지 ‘주제’였는데요
행아웃 회의를 통해 주제를 결정했습니다
저희 주제는 더미데이터 만들기 입니다
저같은 경우 개발하면서 테이블을 생성하면 예를 들면 회원 테이블을 생성하면 더미데이터를 넣고 싶은데 user1, user2/ 이름1, 이름2 이런식의 데이터를 넣어놓는게 싫었습니다
그래서 더미데이터를 10개면 19개의 sql문으로 만들어주던지, 또는 json이나 xml로 만들어주자는 것을 주제로 잡게 되었습니다
(사실 요 주제는 제가 냈는데 저는 사실 이것을 이용해서 뭐가 될지는 모르지만 ‘다른 어떤 주제’를 잡고 그곳에 ‘더미데이터를 넣어주눈것’ 두가지를 다 하자고 했다가 완강한 반대 때매 이것만 했다능…)
장소와 시간은 미리 정했는데요
장소는 작년과 같은 곳으로서 에어비엔비를 통해 예약했는데
https://www.airbnb.co.kr/rooms/10581141
작년에는 에어컨이 없어서 엄청 더웠는데 올해는 에어컨이 있어서 시원했어요
화이트보드, 빔프로젝터, 넓은 책상, 엄청 많은 침대
올해 처음 해커톤에 참가하는 맴버들도 맘에 들어하신거 같죠~?
날짜는 8월 13,14,15 이렇게 2박 3일로 진행했는데요
작년에는 짧아서 힘들었는데 올해는 하루 더 했다고 후반에 약간 루즈해진 느낌도 있었습니다
올해는 좀 재미있게 해보려고 루미큐브같은 보드게임을 좀 들고가볼까 했는데 깜빡하고 안들고 갔네요
올해는 총 5명이 진행하게 되었는데요, 아쉽게 송호훈님께서 참석하지 못하셨습니다 ( 우리팀 아키텍트가 빠지게 되다니… 너무 아쉬웠습니다)
작년에 비해서 달라진게 있다면 개발자 수준도 올해 굉장히 높았고
해커톤을 몇번 해보면서 노련해졌다고 할까…. 미리 준비도 많이 했고요
개발환경이나 기본 프레임워크 세팅은 미리 준비하였고 그렇게 첫날이 시작되었습니다
첫날목표
기능 및 목표 정의
다시한번 아이디어를 말씀 드리면 더미데이터를 만들어준다 입니다
그렇다면 이번 해커톤은 얼마만큼의 기능을 넣을것인가를 토론했고
이름, 날짜, 성별, 나이 같은 회원데이터를 만들게 하자 라는 목표를 정의하게 되었습니다
Core개발
- Export ‘더미데이터를 원하는 타입(query, JSon, xml)에 맞게 변형
- Builder ‘더미데이터를 생성(이름, 날짜, 성별, 나이)
- Command ‘명령
모듈을 크게 저렇게 3개로 나누고 파트를 나눴는데요
Builder : 김영민, 김종인, 최경운
Export : 김민수, 노성현
저같은 경우에는 Export 파트로 가게 되었죠
Export파트에서 가장 먼저한것은 구조를 먼저 설계하는 것이였는데요
요구사항은 json,xml,query로 더미데이터를 만들어줘야 한다 였습니다
저는 여기에 조금더 붙여서 다른데이터 타입을 추가하는데에 있어 유연하게 설계해야 한다였습니다
그래서 저희는 다음과 같은 구조를 만들어봤는데요
Exporter라는 최상위 인터페이스가 있고 데이터 타입에 맞게 상속받도록 구조를 만들었습니다
그리고 실제 데이터구현라이브러리에 따라 구현체를 구현할수 있도록 할수 있는 구조를 만들었는데요
이부분 진행하면서 사실 저는 android의 이미지 로드라이브러리로 유명했었던 volley의 구조를 참고 했는데요
Volley의 Request의 경우 요청하려는 타입에 따라 하위 구현체를 만들어 낼수 있는데요, 요걸 참고해서 의견을 냈고 수용되어서 진행하게 되었죠 (안드로이드 개발 안하시더라도 volley의 아키텍쳐는 꼭 한번 보시길)
json의 경우 구현체를 gson, xml의 경우 Dom4J, Sql의 경우 SqlBuilder라는 라이브러리 구현체를 사용하여 구현하게 되었습니다
아해팀이 작성한 참고기술포스팅