2017 해커톤 - 더미데이터 생성

안녕하세요 아해팀 최경운입니다. 이번 해커톤을 진행하면서 느낀점과 경험을 솔직하게 공유하고자 합니다. 저는 Core쪽에서 더미데이터를 생성하는 부분의 설계를 맡았는데요. 프로젝트의 궁극적 목적은 ‘이름, 날짜, 성별, 나이, 전화번호를 한국식으로 생성해줘야 한다’ 였습니다. 저희가 해커톤 목표로 했었던 가장 중요한 비지니스 로직을 가지고 있는 부분입니다. 샘플데이터를 만들기 전에 저희는 샘플데이터를 생성 하는 부분을 크게 4가지로 나누었습니다.

  1. 랜덤으로 생성.
  2. 주어진 값내에서 생성.
  3. db에 있는 값을 생성.
  4. 날짜를 생성.

1. 랜덤으로 생성되는것은 어떤값을 랜덤으로 생성합니다.

2. 주어진 값내에서 생성은 예를 들어 select 박스내에서 남,여를 선택하는 부분이 있을때 이 선택지 안에서 샘플데이터를 생성하는 부분입니다.

3. db에 있는 값을 생성하는 부분은 샘플데이터를 미리 db에 넣어놓고 db에서 값을 가져오는 부분입니다.

4. 날짜를 생성하는 부분은 말 그대로 날짜를 생성하는 부분 입니다. 저희는 초기 프로토타입에서는 이 4가지 방법을 사용하면 모든 데이터를 생성 할 수 있다고 생각했습니다. 이름을 생성하는 부분은 의미없이 랜덤 한 값을 생성 하면 (ex>핧닥앝) 그 데이터는 전혀 의미 없고 샘플데이터로 가치가 없다고 생각해서 랜덤으로 생성하기 보다는 db에 있는 값을 생성하는 쪽으로 결정했습니다. 시간이 많았더라면 형태소 결합으로 그럴듯한 이름을 생성 할 수 있었겟지만 시간이 부족한 해커톤이기 때문에 이 방법을 선택 했습니다. 전화번호를 생성해 줄때 임의의 숫자로 랜덤으로 생성하는것은 단순 010-XXXX-XXXX로 만들면 되나 저희는 여기서 전화번호 생성시 조건을 추가 할 수 있게 설계했습니다. 예를 들면 특정 010 다음에 나오는 숫자는 1234로 고정한다. 라고 조건을 줄 수 있도록 했습니다. 이런 조건들은 나중에 지역번호나 어떤 특정 테스트 데이터를 추가 할때 사용자가 편하게 쓸 수 있는 부분이라고 생각했습니다. 또한 이 조건들은 동적으로 바뀔 수 있는 부분인데 만약 어떤 조건이 추가 될때 마다 if문을 추가 하게 된다면 어떤 조건을 추가 할때 마다 소스 수정이 있어야 하므로 이 부분을 유동적으로 해결하기 위해 많은 고민을 했습니다. 저희는 정규표현식을 사용해서 조건을 검사 할 수 있도록 했는데, 정규표현식 없이 생성한다면 임의의 값으로 생성이 되고 사용자가 어떤 조건을 넣고 싶다면 이 정규표현식을 통해서 원하는 조건대로 샘플데이터를 생성 할 수 있습니다. 이때 Xeger이라는 것을 사용했는데 자세한 내용은 다음 링크에 잘 설명 되어 있습니다. https://ahea.wordpress.com/2017/08/15/2017해커톤xeger라이브러리의-정규표현식에-맞춘-램덤-데/ 날짜를 표현하는 부분도 사용자마다 원하는 formatting이 다르다고 생각해서 사용자가 formatting 형식을 입력한다면 그 형식에 맞게 나타나도록 설계 했습니다. dummy를 생성하는데 random이 아닌 secureRandom을 사용했는데 secureRandom은 Random을 상속 받는 클래스로 strong random number generator을 하는데 단순 더미인데 괜히 썻나 싶기도 하고 모르는걸 한번 써봤다라는거에 의의를 뒀습니다. Build 쪽은 이렇게 완성이 되었는데, export 에 데이터를 어떻게 넘겨주냐 이게 문제가 되었습니다. 저는 vo로 넘겨준다고 했고, export 쪽에서는 map으로 받고 싶어했습니다. map으로 받고 싶어 하는 담당자는 우리가 하나의 서비스를 만드는거였지만 모듈을 나눴고, 모듈간에 있어서 vo라는게 생기면서 결합도가 생기는 부분 때문에 map으로 데이터를 전달 받고 싶어 했습니다. 제 의견은 어차피 하나의 서비스이고 vo로 하면 map으로 했을때 보다 코드가 짧아지고 map으로 다시 감싸고 풀고 이런 번거로운 작업이 없기 때문에 굳이 map으로 할 필요가 없다가 제 생각이었습니다. 결국은 제 의견을 받아들여서 vo로 쓰게 되었는데, 결정되기 전까지 격렬한 토론을 했습니다. 해커톤이 끝난 후에 다음 링크를 봤는데 https://www.slideshare.net/JavaCommunityOrg/t3s1-vo 다시 돌아간다고 해도 map은 먼가 쓰기 거북한 느낌입니다. 3일 동안 해커톤하면서 목이 아플정도로 토론을 많이 했는데 시간이 많이 지나서 기억 나는 부분이 몇가지 없네요.. 마지막으로 새벽에 거의 완성되서 시연하는 모습을 영상으로 올립니다. https://www.youtube.com/watch?v=oKrzGK2DnYw&feature=youtu.be


 Previous
2017 해커톤 – Front 2017 해커톤 – Front
안녕하세요 아해 팀 new멤버 김민수입니다. 아해 팀에 들어와서 처음으로 한 활동이 해커톤이었고, 생애 첫 해커톤인 까닭에 긴장과 설레는 마음을 가지고 임했었네요. 이번 해커톤을 하기 전 기대했던 것은 관심 있던 기
2017-11-22
Next 
2017 해커톤 - 1장 intro, export 2017 해커톤 - 1장 intro, export
안녕하세요 아해팀 노성현입니다 이번 포스팅에서는 아해팀의 가장 중요한 행사인 해커톤을 지난 8월에 진행하였기에 내용을 공유하고자 합니다 해당 포스팅은 기술문서는 아니기 때문에 편하고 가볍게 작성되었습니다 뭘 배우시려
2017-10-12
  TOC