딜리셔스 입사기

안마의자러버와 코드몽키, 두 달간의 썸머 인턴십 후기

김하균, 
이진구
2021.09.13

인턴십 입사

안녕하세요, 썸머 인턴십으로 딜리셔스에 입사한 김하균입니다. 딜리셔스를 선택한 이유는 한국 의류 도/소매 시장의 대부분이 사용하는 서비스고, 빠르게 성장하고 있는 회사다 보니, 성장하는 딜리셔스에 맞춰 저도 함께 성장할 수 있으리라 생각했기 때문입니다. 다른 기업에서의 인턴십 경험이 있지만, 정규직 전환형 인턴십은 처음이라 시작부터 첫 직장인 것처럼 두근두근한 마음으로 시작했습니다.

입사 첫날은 OJT부터 진행하였습니다. 딜리셔스가 어떤 회사이며 지금까지 어떻게 성장했고 또 앞으로는 어떻게 성장할 것이라는 소개와 회사의 문화는 어떻고 인턴십은 어떻게 진행될지에 대한 전체적인 과정을 안내받는 자리였습니다. OJT 이후에는 각 팀으로 이동하여 팀원들과 점심식사 자리를 가졌습니다. 첫 만남이다 보니 어색했지만 다들 편하게 대해주셨던 분위기가 기억납니다.

이후에는 자리에 놓여 있는 웰컴 키트를 구경하며 인턴십 과정 중에 사용할 맥북에 업무 환경을 세팅했습니다. 두근대는 마음은 웰컴키트의 사진으로 남았습니다. 카카오톡 프로필 사진으로 설정하고 신났던 기억이…

포스트잇, 텀블러, 애플 매직키보드 등 웰컴 키트로 주신 물품 중에 가장 맘에 든 굿즈는 후드티입니다. 입사 전 후드티 사이즈를 물어보실 때 약간 큰 사이즈로 말씀드려서 넉넉하고, 부드러운 소재여서 포근하기도, 편하기도 하고, 소속감도 들어서 좋습니다. 또, 인턴십 과정에서도 딜리셔스를 첫 직장으로 여겼기 때문에 딜리언즈 합류를 축하하는 문구에서도 큰 만족감을 느꼈습니다. 이렇게 웰컴키트를 구경하고 맥북에 개발환경을 세팅하다보면 어느새 퇴근 시간! 입사 첫날은 회사의 복지로 1시간 조기 퇴근이 있어 빠르게 퇴근하였습니다.

인턴 프로젝트

제가 진행한 인턴 프로젝트는 미니 광고 플랫폼입니다.

광고 검색파트의 인턴으로 들어왔기 때문에 광고플랫폼을 접하게 되었는데, 신입은 알고 있기 어려운 광고플랫폼을 처음 접해서 이해하기 쉽도록 많은 부분을 생략하고 중요한 부분만 포함된 프로젝트를 진행하게 되었습니다. 그렇다 해도 기본적인 개념은 이해하고 진행해야 했기 때문에 먼저 AD-Tech가 무엇인지 리서치했고, 이후 설계, 개발, 발표 순서로 프로젝트를 진행했습니다.

또한, 프로젝트는 매주 스프린트로 진행되었으며 화요일마다 멘토를 포함하여 참여를 원하는 다른 파트원들과 함께 스프린트 리뷰를 진행했습니다.

AD-Tech 리서치

간단하게 AD-Tech란 광고와 기술이 합쳐진 단어로, 기술을 활용해 광고하는 것을 의미합니다. 단순히 지정된 시간에 광고하는 TV 광고부터 시작해서 “어떤 사용자가 특정 데이터를 가지고 있으니 이 광고를 노출하면 클릭할 가능성이 높다”라는 광고방식까지 AD-Tech가 어떻게 발전했고 어떻게 활용되는지를 찾아보았습니다. 리서치를 통해 AD-Tech에 대해 이해할 수 있게 되었으며 딜리셔스에서는 AD-Tech를 어떻게 적용하여 광고플랫폼을 운영하고 있는지 관찰하고, 더 나아갈 점을 고민해 볼 수 있는 시간이 되었습니다.

제가 진행한 AD-Tech 리서치는 노션을 정리하여 발표까지 진행했습니다. 멘토님이 같은 팀원들 앞이니 편하게 발표하라고 하셨지만, 기획자분들까지 발표를 보러 오실 줄은 몰랐습니다.

AD-Tech 발표자료

프로젝트 설계

같이 광고 검색파트로 입사한 인턴 동기와 동일한 주제로 진행했기 때문에 둘이서 머리 싸매고 프로젝트를 설계했습니다(동일한 주제로 진행했지만, 개발은 따로 하였고 경쟁하며 개발하지 않고 막히는 부분에서 도움을 받는 등 서로 협력하며 진행했습니다).

광고 플랫폼의 기본 아키텍처는 멘토가 설계해주셔서 저희는 요구사항을 먼저 정리했습니다. 이후 draw.io를 활용하여 요구사항대로 서비스의 기능들이 어떻게 동작해야 할지를 정리했고, 광고의 상태는 어떻게 변화할 것인지 다이어그램을 구성해보았습니다. 그리고 요구사항에 맞도록 DB 스키마를 설계했고, API도 설계해 나갔습니다. 프로젝트 설계에 대한 내용 역시 노션으로 정리하여 리뷰 때 발표까지 진행했습니다.

프로젝트 설계자료

프로젝트 개발

개발은 Spring Boot로 진행했으며, JPA를 사용했고 DB로는 MySQL과 MongoDB를 사용했습니다. 개발에서 조금 어려웠던 부분은 DDD(Domain Driven Design)로 진행했던 점이었습니다. 처음 접하는 디자인패턴이다 보니 특정 파일이 어떤 패키지에 속해야 되는지 헷갈리는 점이 있었지만, 멘토가 알려주신 프로젝트 디렉토리 가이드를 참고해 적용했습니다.

이전에는 진행해보지 못했던 Spring Batch와 Quartz를 활용한 DB 스케줄링 작업도 진행해보았고, 유효성 검증을 위한 Custom Validation을 생성해본 경험과 효율적인 의사소통을 위한 GlobalExceptionHandler에서의 ErrorResponse 활용 등 이전에는 경험해보지 못했던 내용도 학습하면서 적용해볼 수 있는 유용한 시간이었습니다.

스프린트 리뷰뿐만 아니라 평소에도 질문을 많이 했는데, 멘토뿐만 아니라 다른 파트원들도 많은 도움을 주셨습니다. 그래서 통합 테스트에서 Test Data의 중복문제도 해결하고, Spring Batch에서 DB Query를 로그로 확인해서 문제를 발견하는 등 막히는 부분을 해결했던 경험이 있습니다.

진행한 프로젝트의 코드는 Github에 공개되어 있습니다.

프로젝트 발표

프로젝트 최종 발표 때는 디자인 없는 간단한 HTML에 광고를 등록하고, 등록된 광고가 노출되며 만료되는 과정까지 시연과 함께 진행했습니다. HTML은 광고를 등록, 수정할 수 있는 어드민 페이지와 10초마다 페이지가 새로고침되어 그때마다 광고 선정 알고리즘을 통해 광고 Pool에서 선정된 광고만 노출되는 클라이언트 페이지로 구분하였으며 HTML은 광고플랫폼과 동일한 서버에 배포해서 local에서 실행하였습니다. 광고 검색파트가 속한 인텔리전스 플랫폼팀의 팀원들이 모두 참여해주셨고, 성공적으로 마무리하였습니다.

회사 생활

딜리셔스의 개발팀은 출퇴근 선택 근무제를 진행하고 있어서 11시~16시 코어타임을 제외하고는 원하는 시간에 출퇴근할 수 있습니다. 하지만 인턴은 고정 출퇴근제로 진행하여 10시~19시 고정 출퇴근 시간으로 근무했습니다.

업무 문화로는 간단하게 자유로운 분위기라고 말씀드릴 수 있습니다. OJT 때 들은 얘기가 아직도 기억에 남습니다. “효율적으로 일하자”, 일이 안될 때는 쉬었다가 다시 집중해서 일할 수 있는 환경을 마련하자고 하신 CTO님의 말씀이 제 기억에 강하게 남아있습니다. 딜리셔스의 유명한 탁구대가 여기서 많이 활용됩니다. 일에 집중이 안 되면 탁구 한 판하고 다시 업무로 돌아오는 광경을 쉽게 볼 수 있습니다. 저는 탁구를 칠 줄 몰라서 안마의자를 애용했습니다. 졸리고 뻐근해서 일에 집중이 안될 때 안마의자에서 쉬고 오면 다시 업무에 집중할 수 있었습니다. 바쁘지 않으면 하루 한 번씩은 꼭 가서 이용했던 것 같습니다.

집에서도 살까 말까 하다가 방치될 것 같아 구매하지 않았는데 회사에서 경험한 뒤로는 구매하기로 결심했습니다.

“OO님”으로 호칭하는 문화도 좋았습니다. 요즘은 많은 스타트업에서 사용하는 호칭 문화이긴 하지만 직접 경험하니 직급에 얽매이지 않고 쉽게 다가가서 소통할 수 있도록 도와주는 문화인 것을 체감했습니다.

마지막으로 생각나는 복지는 업무 관련 도서 지원입니다. 저는 책이 특정 지식에 대해서 단계적으로 학습할 수 있도록 잘 구성된 수단이라고 생각해서, 평소에도 책으로 공부하는 편입니다. 그러다 보니 책을 많이 읽고 싶은데, 업무와 관련된 도서를 지원해주셔서 원하는 만큼 책을 구매하고 읽어볼 수 있다는 점이 좋았습니다. 정규직으로 전환된 이후에 가능할 줄 알았는데, 인턴도 가능해서 행복했습니다.

마치며

프로젝트를 진행하며 아쉬운 점도 있었지만 그래도 발표까지 마무리하여 인턴십을 마쳤습니다! 이후 대표님과 인턴십 과정의 경험 등 여러 부분에 대해서 면담을 진행했고 정규직으로 전환된다는 안내를 받았습니다. 인턴십 과정을 성공적으로 마무리했다는 수료증도 발급받았습니다. 인턴십을 진행한 뒤에 정규직으로 전환되다 보니 회사 생활에는 적응된 상태라서 앞으로 주어질 업무에만 적응하면 된다는 점이 매력적입니다. 앞으로도 딜리셔스와 함께 성장할 저 자신을 기대하며 이상으로 딜리셔스의 인턴 생활기를 마치겠습니다.





안녕하세요. 딜리셔스 정보 검색팀 소속 이진구입니다. 저도 프로그래머스 썸머코딩 프로그램을 통해서 딜리셔스 인턴으로 입사했습니다. 면접 때 너무 떨어서 ‘아, 이건 떨어졌다’ 생각을 하고 있었는데, 합격하게 되어 기쁜 마음으로 입사하게 되었습니다.

입사 첫날

입사 첫날, 간단한 OJT를 진행했습니다. 딜리셔스가 어떤 서비스들을 제공하고 있는지, 시장 규모는 어느 정도인지 파악할 수 있는 좋은 경험이었습니다. 입사 후 어떤 서비스를 만들어나가야 하는지 대략적으로 파악할 수 있는 좋은 기회라고 생각합니다! OJT가 끝나면 근무하게 될 파트에서 간단한 인사와 자기소개 시간을 가졌습니다. 어느 정도 인사가 끝나고 나면 개발환경을 세팅하는 시간을 가지는데요. 회사에서 맥북과 주변 기기(키보드/마우스), 듀얼 모니터를 지원받아서 처음부터 쾌적한 환경에서 근무할 수 있었습니다. 저는 맥을 너무 오랜만에 만져봐서 첫날 개발 환경을 세팅하는 데 조금 어려움이 있었습니다. (맥 OS 단축키 때문에 며칠은 익숙해지지 않았습니다.~~

아! 저희 딜리셔스는 입사하시면 사무용품 지원을 해주는데요. 꼭 모니터 암과 노트북 거치대를 먼저 주문하시기를 권장합니다. (없으면 목이 너무 아파요….)

인턴 과제

인턴으로 입사하시면 인턴 기간 동안 진행할 과제를 받게 되는데요, 최대한 현재 팀에서 진행하고 있는 업무들에 익숙해질 수 있도록 유도해 주셨다는 느낌을 많이 받았습니다. 저는 인텔리젼스 플랫폼 광고/검색 파트 소속으로 입사했기 때문에 이와 관련된 과제를 받게 되었습니다.

프로젝트 구조

제가 받은 과제는 AD Tech의 일부분을 구현하는 것이었습니다.

대략적인 AD Tech 구조도

이 복잡해 보이는 AD Tech의 여러 기능 중에 광고 소재 CRUD 기능과 DSP의 비딩과 관련된 기능을 중점적으로 구현하게 되었습니다.

개발 일정

약 8주간의 개발 기간을 가졌는데요. 간단히 정리해보면 아래와 같았습니다.

도메인 지식 파악

먼저, AD Tech라는 용어가 생소해서 AD Tech에 대한 조사와 조사한 내용을 토대로 발표 시간을 가졌습니다.

AD Tech 발표자료 일부

발표를 마치고 간단한 질의 응답시간이 있었는데요, 이때 광고 플랫폼이 앞으로 어떤 식으로 발전할 것인지 유도해 주는 질문을 해주셨던 것이 생각납니다.

프로젝트 설계

AD Tech에 대한 사전 조사 이후에는 현재는 글로벌 플랫폼 소속이신 하균님과 같이 프로젝트를 설계하는 과정이 있었습니다. 간단히 ERD도 그려보고 시퀀스 다이어그램도 그려보면서 어떤 방향으로 구현을 해나가야 할지 서로 많은 의견을 교환했습니다.

프로젝트 설계에 사용한 시퀀스, 상태 다이어그램

이번에 프로젝트를 설계하면서 다시 한번 협업의 중요성을 느낄수 있었습니다. 혼자만의 고정관념에 빠져서 자칫 복잡해질 수도 있었던 설계가 팀원분과의 의견 교환을 통해서 조금 더 간단하고 좋은 구조로 바뀌는 경우가 많았습니다.

프로젝트 구현

설계 후에는 각자 프로젝트를 구현하는 과정이 있었습니다. 처음 사용해 보는 기술 스택들도 있어서 어려움이 많았었는데, 팀원분들이 다들 질문하면 잘 받아주시고 같이 고민해주셔서 수월하게 해결해 나갈 수 있었습니다. 피드백이 잘 이루어지다 보니 어느 정도 기능을 구현해놓고 코드 리팩토링을 하는 시간도 가질 수 있었습니다. 개인적으로는 리팩토링이 유의미하게 이루어진 것 같아서 뜻 깊었습니다.

일과

출퇴근

인턴들은 10:00~19:00까지 고정적인 시간에 출퇴근 해야 해서 규칙적인 생활을 했었습니다.

규칙적이었던 하루 일과

데일리 스크럼

인텔리전스 플랫폼 팀에는 하루에 한 번 일과를 시작하기 전에 스크럼 시간이 있습니다. 이 시간에는 모든 팀원이 모여서 간단히 업무내용을 공유하는 시간입니다. 공유할 정보나 건의 사항이 있으면 같이 나누면서 진행 됩니다. 제가 할 업무가 무엇인지 정리를 할 수 있는 시간이기도 하면서 다른 팀원분들은 어떤 업무를 진행 중인지 알 수 있는 시간입니다.

코드 리뷰

일주일에 한 번, 구현했던 내용에 대한 코드 리뷰 시간이 있었습니다. 이 시간에는 저희가 구현했던 코드들을 직접 보여드리고 피드백을 받는 시간이었습니다. 스스로 제가 구현했던 코드들에 대한 근거나 제대로 사용을 한 것인지 한 번 더 확인해 볼 수 있는 좋은 기회였습니다. 코드에 대한 피드백 이외에도 구현하면서 겪는 어려움에 관해 물어보고 같이 고민해 볼 수 있는 시간이어서 인턴 기간 동안 정말 많은 도움이 되었습니다. 기술 스택에 대한 적용 방법이나 구현 방향 외에도 어떤 알고리즘을 사용해야 효율적인지, 코딩에 어려움을 겪을 때 어떤 방식으로 구현해 나가는 것이 좋은지 많은 부분을 공유해주시고 같이 고민해 주셨습니다. 코드 리뷰 시간이 있어서 더 성장할 수 있었습니다.

느낀 점

개발 문화

인턴을 하면서 느꼈던 회사에 대한 인상은 정말 개발하기 좋은 환경이라는 것입니다. 자유로운 분위기 속에서 서로 의견을 교환하거나 정보를 공유하는 장면을 종종 볼 수 있었습니다. 인턴 기간 동안 이런 문화를 느끼면서 ‘나도 이런 곳에서 일하고 싶다’라는 생각을 많이 했었습니다.

의사소통의 중요성

정말 중요하다고 느꼈던 부분이 있는데요. 바로 적극적인 의사소통입니다. ‘이런 질문을 해도 되나’라는 생각으로 혼자서 진행을 하다가 로직을 완전히 새로 작성하게 되는 경우가 발생했었습니다. 프로젝트를 진행하다가 애매하다고 느끼는 부분들은 언제든지 다른 분들과 적극적으로 의견교환을 하는 것이 삽질을 방지할 수 있다는 것을 이번 기회에 깨닫게 되었습니다.

마치며

길다면 길고 짧다면 짧은 2달간의 인턴과정은 이렇게 끝이 났습니다. 프로젝트를 진행하면서 많이 배우기도 했고 아쉬운 점도 많았습니다. 하지만, 학생이었던 제가 개발자로 성장해 갈 좋은 기회였다고 생각합니다.

끝까지 읽어주셔서 감사합니다.

김하균

딜리셔스 신사업 서버 개발자

"PUT /api/knowledge/me?with=Dealicious"

이진구

인텔리전스 플랫폼 정보검색 파트

"코드 몽키에서 벗어나기 위해 노력중인 개발자"