본문 바로가기

프로그래밍/후기

매우 뒤늦은 카카오테크캠퍼스 1기 최종프로젝트 소개

카테캠 수료를 한지 두달이 지났다. 수료한 다음달 12월에는 이번학기 카테캠 + 현장실습으로 고생했으니 좀만 쉬어야지 라는 마인드 였지만 싸피 면접, 소프티어 시험을 준비했었다. 카테캠 마지막에 팀원들한테 꼭 정리하세요 말해놓고 내가 안하고 있는것도 웃긴 일이었다. 준비했던 싸피 소프티어 모두 붙게 되었고 나는 소프티어를 선택하게 되었다. 면접이나 시험내용 후기는 기밀이라 리뷰안하려고 한다. 소프티어는 오프라인 교육이라 상경하게 되었고 나는 올라가는 날을 기다리며 가족, 친구들과 놀았다. 그래서 해야지 해야지 하다가 이 지경까지 오게 된것이다. 기억이 가물가물 하지만 프로젝트로 뭘 했는지 적어보려고 한다.

 

기획

카카오측에서 전남대, 부산대 학생들을 여수 마리나 호텔? 리조트?에 2박 3일동안 가둬놓고 아이디어를 짜냈다. 팀원들과 함께 협력활동을 하며 팀워크를 늘리고 피그마 사용법, 아이디어 도출방법, 마케팅 등에 관한 강의 및 실습을 하였다. 피그마 같은 경우에 디자인이나 기획등에서 쓰기 때문에 나한테는 필요없는 지식같았는데, 소프티어 가서 사용하게 될줄은 꿈에도 몰랐다. 우리팀은 각자 아이디어를 준비해와서 그 자리에서 어떤 아이디어가 괜찮은지 고민하게 되었다. 그리고 그 중 선택된 것이 외국인을 위한 한국어 교육 어플리케이션 이었다. 문제점과 아이디어 틀을 잡아 기획을 좀더 세부화 하여서 발표하게 되었다. 기획, 중간발표, 최종발표 때마다 상품이 있었는데 하나도 못딴게 아쉬울 따름이다. 

 

개발

내가 개발한 쪽은 크게 멘토링 게시글, 영상 부분이었다. 개발 당시 멘토링 쪽을 빠르게 끝내고 쉬엄쉬엄하고 있었는데 어느새 보니 시간이 없어 다급하게 영상쪽을 완성하였었다. 개발하면서 들었던 정말 여러가지 의문점들이 있었는데 이 곳에 열거 해놓고 하나하나 검색하면서 찾아보도록하자. 일주일에 한 번 정해진 멘토님께 멘토링을 받으며 코드리뷰, 개선 사항들을 받는다. 이러한 내용들이 정말 도움 많이 됐다고 생각하고 이부분도 함께 열거해놓고 공부하려고한다.

 

내 파트 개발하면서 가장 고민했던것들은 다음과 같다. 해결한 부분도 있지만 아직도 해결하지 못한 부분들이 있다.

 

1. 멘토링 ERD

user 객체에서 멘토, 멘티 여부를 확인하는것 까지는 맞는데 게시글들이 멘토만 작성할 수 있고 서로 멘토가 됐는지, 아직 교류중인지, 그 전인지 분간하기 위해 어떻게 설계해야할까를 정하는데 많이 고민했던것같다. 아래 영상들과 잘 나오는것 보면 잘 해결한 것같다. ERD도 멘토님의 피드백에 따라 매 주마다 조금씩 변화점이 있었다. 그래도 가장 인상 깊었던 부분은 softdelete부분 인것 같다.

 

2. 영상 히스토리

영상에 시청기록을 남기려면 다음과 같은 매커니즘을 따라야한다. 영상은 2가지 종류가 있다.

1. 한번이라도 본적이 있는 영상

2. 아예 처음 보는 영상

1번의 경우에는 최근으로 옮겨줘야하고 2번은 새로 생성해야되기 때문에 다른 처리가 필요로 하다.

 

3. 영상 랜덤화

가장 고민하고 조사도 많이 해봤지만 아직도 답을 찾지 못했다.

이전에 면접때 받은 질문중하나다. 1000000개 (아주 큰수) 의 공이 있다고 가정할때 똑같은 공을 중복되지 않게 뽑으려면 어떻게 해야할까? 그리고 나는 이 문제의 답을 아직도 찾지 못했고 이 역시 이 영상랜덤화와 연관있는 문제라고 생각한다. 우선 내가 했던 대답은 hashmap이나 방문처리해서 표시 였는데 이 역시 수가 너무나도 크다면 의미 없는 수치이다. 유튜브를 생각해보면 상상이 될것이다. 어떤 매커니즘으로 우리에게 영상을 추천해 주는가. 물론 우리는 큰 데이터를 다루는 것이 아니기 때문에 랜덤화를 어느정도 보여주려고 전체 영상데이터가 100개라면 그 중 20개씩 잘라서 4개씩 섞어서 보여주게 구현하였다.

 

그외 기억나는 부분

첫 멘토링때 멘토님이 초반에 정할 수록 중요한것 이라면서 알려주신게 위에 언급한 softdelete와 lint설정이다. lint의 경우에 어느정도 개발이 진행되어 그냥 넘어가자고 했지만 다른 조들중 적용한 팀들을 봤을때 차이가 보이긴 했었다. 게시글 같은 경우에 계속 해서 강조 하셨다. "길이제한" 아마 전에 데이신적이 있으신가 보다. 그 외에 피드백받아서 고쳐 나중에 따로 정리해볼만한내용으로는

1. Enum형을 저장하기위한 StateConverter 구현

2. Casework처리를 위한 Bifunction의 사용

3. 큰 데이터 처리를 위한 위의 질문에 대한 생각나는것? BloomFilter

 

후기

현장실습과 병행하면서 하느라 낮에는 출근하고 밤에는 돌아와서 프로젝트를 진행하였다. 그와중에 일주일에 한번씩 강의도하고 회의도하고 멘토링도 받고... 개인적으로는 만족할만한 결과물이 나왔다. 아쉬웠던것은 security쪽을 한 사람한테 맡겨 버렸는데 그 사람은 시작할때부터 끝까지 그 부분만 만지게 될 정도로 규모 있는 부분이라는 것을 알게 되었다. 쉬는 동안 이쪽 공부를 해봐야겠다 했는데 소프티어를 하게 되어 하는 중에 공부해볼려고 한다. 스프링의 경험, 팀프로젝트 협업 경험 등의 다양한 경험들을 쌓을 수 있는 좋은 기회였던 것 같다.

 

시연

발표했던 영상들을 유튜브로 올린거라 내용이 좀 많다.

 

로그인

 

영상

 

멘토링

 

채팅방