본문 바로가기
다이어리

[Diary] 2020년 회고 - 업무

by KKambi 2021. 2. 7.

취업준비를 하면서 개발자분들의 회고를 보고 나도 개발자가 되면 저렇게 매년 회고글을 작성해야지 생각했던 게 엊그제 같은데, 어느새 1년을 직장인으로 보내며 이렇게 글을 작성하게 되었네요.

더 성숙한 개발자가 되기 위해서 오늘은 2020년을 돌아보는 글을 써보려 합니다.
이번 회고는 올해 제가 진행했던 업무를 중심으로 되새겨 보겠습니다.

 

타임라인

2020.01 ~ 2020.06 : 하나금융티아이 하나카드 ITO 법인 파트
2020.07 ~ 2020.09 : 딜리셔스 개발 인턴
2020.09 ~ : 정규직 전환 후, 딜리셔스 개발팀 재직중

금융권에서 처음 직장생활을 시작하면서 개발자라는 직업을 가지게 된 해였습니다. 그렇지만 제가 생각했던 개발자의 성장을 이 회사에선 이루기 힘들다 생각하여 이직을 준비했고, 전환형 인턴으로 딜리셔스라는 회사에 입사해 2개월 간의 인턴 생활을 거쳤습니다. 간단하게 개발 환경에 익숙해진 시간을 가진 뒤, 사내 도서 관리 서비스를 데모 버전으로 만들었습니다. (그리고 이는 아직도 진행중입니다....) 전환이 된 후엔 2번의 이터레이션에 참여하여 광고 플랫폼 개발의 일부분을 담당했네요.

첫 회사에선 딱히 했던 일이 없었으므로 딜리셔스에서 진행한 프로젝트를 돌이켜 보겠습니다.

 

첫번째 프로젝트 - (인턴) 사내 도서 관리 서비스

2020.07 ~ 2020.09

항목 내용
잘한 것 - 풀스택으로 데모 버전 구현 완료 (Spring Boot + React)
- 새로운 지식을 학습하여 도입 (Spring Security / Atomic Design / MobX)
못한 것 - 상용 환경 배포 실패
- 부족한 기능

Spring에 대한 기초적인 지식은 있었지만, 본격적인 프로젝트를 구현해본 적은 처음이었습니다. React는 네이버 부스트 캠프에서 학습해서 사용해봤지만, 상태 관리 라이브러리는 처음 도입해봤습니다. 하지만 결국엔 풀스택으로 데모 버전을 구현했고, 로컬 환경에서 누군가에게 보여줄 수준은 되었습니다.

그렇지만 사내 직원분들이 사용할 수 있도록 상용 환경에 배포하는 일은 이루지 못했습니다. 결과물에 대한 스스로의 만족도가 떨어졌기도 하고, 인턴 신분이라 회사의 AWS 자원을 마음대로 사용할 수 없었기 때문이기도 합니다. 그리고 기능도 미비했습니다. 처음 기획했던 기능은 마무리지었지만, 실제 사용하기에 추가적인 기능이 더 필요했습니다.

이 프로젝트는 지금도 진행중입니다. 데이터베이스 스키마를 다듬었고 배포할 수 있는 환경을 준비하고 있습니다. 현재 대여자를 기록하고, 슬랙으로 대여 신청 메세지를 보낼 수 있는 기능을 거의 완성했습니다.

하지만 업무 중에 틈틈이 개발하다보니 속도가 많이 느리네요.
빨리 마무리해서 다른 분들이 직접 사용해볼 수 있게 하는 게 제일 급한 과제입니다😅

 

두번째 프로젝트 - 광고 플랫폼 구축

2020.09 ~ 2020.10

항목 내용
잘한 것 - Spring Boot 프로젝트에 익숙해짐
- 광고 도메인 지식을 익히려는 노력
못한 것 - 미성숙한 테스트
- ORM 학습 부진
- 프로젝트 진행 과정에 대한 부적응

정규직 전환 후, 광고 플랫폼 구축 프로젝트에 처음으로 참여하게 되었습니다. 저희 회사는 과거에 구좌형 광고만을 운영했었는데요. 광고 효율의 극대화, 데이터 활용 등의 목적으로 비딩 광고를 시작하기로 했습니다. 최근 온라인 상에서 집행되는 대부분의 광고들은 이렇게 애드테크(Ad-Tech)에 기반하여 발전하고 있습니다.

저는 새로운 광고 플랫폼 구축의 마지막 이터레이션에 참여하게 되었구요. 주니어 개발자다보니, 상대적으로 중요도가 덜한 어드민 서비스를 담당하게 되었습니다. 어드민에는 광고 심사 기능이 필요했습니다. 하지만 신 광고 플랫폼에서 처음 도입된 MSA다 보니까 각 서비스가 관심사대로 정확하게 분리되어 있지 않았었고, 심사 생성은 다른 서비스에 있는 반면 심사에 관한 Read / Update / Delete는 어드민 서비스에 구현하게 되었습니다.

이터레이션을 진행하면서 파트 내 개발 시스템에 적응했던 게 가장 큰 결실이었네요. 인턴 때는 정보가 제한되다 보니 어떻게 개발하고 있는지 내용물을 알 수 없었거든요. 그리고 광고 도메인을 처음 접하면서, 평생 광고 분야와 관계가 없었던 제가 이를 공부하는 계기가 되었습니다.

하지만 기술적으로나 외적으로나 부족한 부분이 많았습니다.

제일 큰 문제는 테스트였네요. 테스트를 꼼꼼히 짜면서 개발한 적이 평생 처음이었는데, 이게 맞나? 하는 생각이 들 때가 너무 많았습니다. 팀원분들이 친절하게 도움을 주시지만, 하나하나 다 물어볼 수도 없는 노릇이고... 이 구현물에 대한 확신이 없는 게 정말 어려웠네요. 특히 테스트 데이터를 구축하는 방법을 잘못 선택했습니다. 결국 이는 다음 이터레이션에 가서야 내가 잘못 테스트했구나! 하고 깨닫게 되었죠...

ORM을 제대로 활용하지 못한 것도 컸습니다. 테이블 구조 때문에 JPA와 Querydsl을 제대로 사용해야 비효율을 줄일 수 있었는데, 전혀 그러지 못했습니다. 오류가 나지 않게 사용하는 게, 그나마 제가 할 수 있었던 일이었네요😢

프로젝트 진행 과정에 빨리 적응하지 못했던 것도 힘들었습니다. 이런 개발 이터레이션은 인생 처음 경험하는 프로세스였으니까요. 프론트와 협업은 어떻게 해야하는지, API 명세서는 어떻게 해야 잘 작성하는 것인지, QA는 대체 어떻게 진행되고 있는건지! 주니어로써 처음 경험하는 작은 일들이, 저에겐 조금 큰 스트레스였습니다.

참고로 이 포스트를 참고하며 테스트를 작성했는데 스프링을 사용하시는 분이라면 한 번 보시면 좋겠네요!

 

Spring Guide - 테스트 전략 - Yun Blog | 기술 블로그

Spring Guide - 테스트 전략 - Yun Blog | 기술 블로그

cheese10yun.github.io

 

세번째 프로젝트 - 광고 플랫폼 개발

2020.11 ~ 2020.12

항목 내용
잘한 것 - 효율적인 코드를 작성하려고 함
- ORM 학습
- 프로젝트 진행 적응
못한 것 - 아직도 미성숙한 테스트
- 도메인 지식 학습 부족

신 광고 플랫폼의 기본 구축이 끝나고, 새로운 기능을 추가하는 이터레이션이었습니다. 검색 광고라는 신기능을 추가할 계획이었고, 이를 위해 진행하는 2번의 이터레이션 중 첫번째였습니다.

저는 크게 2가지 작업을 진행했습니다. 다른 서비스에 있던 심사 Create 기능을 어드민 서비스로 이전하는 것 + 검색 광고를 대비해 심사 CRUD의 로직을 수정하는 것.

생각보다 할 일이 적다고 생각했는데, 이터레이션 중반이 되니 생각보다 할 일이 많더라구요. 기존 광고와 방식이 다른 새로운 광고를 추가하는 일은 심사 로직에도 큰 영향을 미쳤습니다. 하지만 이 과정에서 효율적인 코드를 작성하려고 노력했고, JPA + Querydsl를 좀 더 학습하는 계기가 되었네요. 테이블 구조가 변경되면서 저번 이터레이션에서 생성했던 비효율적인 쿼리를 줄이려고도 했구요. 이는 최근 진행한 3번째 이터레이션에서 큰 밑거름이 되었습니다.

프로젝트 진행 과정에도 익숙해졌어요. 프론트분들과의 소통도 원활하게 진행할 수 있었고 전체적으로 어떻게 개발과 배포가 진행되는지 그려지게 되었습니다.

그런데... 테스트 코드는 여전히 부족하더라구요. 특히 심사 생성 부분을 옮겨오면서 기존에 만들어놨던 테스트 데이터를 일일이 수정하게 되면서, 이런 방식의 테스트 데이터 생성은 잘못됐구나.... 뼈저리게 느꼈습니다😫

도메인 지식을 제대로 숙지하지 못했던 점도 컸네요. 심사 생성을 옮겨오면서 심사만 잘 알아야 하는게 아닌, 광고 소재 등록이 어떻게 돌아가는지 알아야 했고 전체 프로세스를 더 디테일하게 이해했어야 했는데... 그 학습을 제대로 수행하지 못해 어려움을 많이 겪었습니다. 사실 저번 이터레이션을 큰 오류 없이 진행하면서 조금의 자신감이 생겼던 상태였는데, 기획 테스트 한 방에 이게 다 사라졌어요😀

 

프로젝트 진행에서 개선해야할 점

크게 3개의 개발 덩어리를 진행하면서 개선해야할 점은 명확했습니다.

  1. 개발 기술 (제일 중요)
  2. 도메인 지식

따라서 2021년도에는 두 가지 부문에 맞춰 학습을 진행하려 합니다.

기술적인 측면에서는 어플리케이션 개발(Spring Boot 및 테스트) / ORM(JPA와 Querydsl의 활용) / 데이터베이스 (MySQL과 Mongo) 총 3가지를 중점적으로 학습하고 싶네요. 엘라스틱서치도 공부해야 저희 파트에서 1인분을 수행할 수 있을 것 같은데 갈 길이 멀어보여요. 그리고 JPA는 현재 인프런에서 김영한님의 기초 강의를 수강 중인데요. 신청한지 1달 반이나 지났는데 아직 절반밖에 듣지 못했습니다. 속도를 올려야겠어요!!

도메인적인 측면에서는 광고 지식을 좀 더 공부하려 합니다. 온라인에 Ad-Tech를 검색하면 나오는 다양한 글들을 조금씩 보긴 했는데, 아직도 제 머릿 속에는 지식들이 중구난방으로 흩어져 있네요. 이를 큰 백지에 하나의 흐름으로 연결하는 아키텍쳐를 그려보고 우리 플랫폼의 광고 집행 과정을 복습해야 할 것 같습니다.

 

다음 회고는 개인적인 측면에서 진행해 보겠습니다. 기대해 주세요😀

 

댓글