본문 바로가기

회고

주니어 백엔드 개발자 2023년 회고

 

 

 

상반기 회고를 쓴지 얼마 안된 것 같은데, 정신없이 지내다보니 벌써 2023년이 지나버렸다.

 

지난 상반기 회고는 두서없이 생각나는 내용을 마구잡이로 써서 아쉬움이 좀 있었다. (그렇다고 고치지도 않음)

따라서 상반기를 포함해 종합적인 2023년 전체 회고글을 쓰려고 한다.

 

1. 넥슨에서의 플랫폼 개발자


지난 1년간 B2C/B2B 서비스 프로젝트에 참여했다.

입사해서 가장 처음으로 개발에 참여했던 서비스인 피파온라인 개인화 서비스 유어필드를 시작으로 현재는 넥슨 크리에이터즈 개발에 참여하고 있다.

 

회사에서 운영중인 실제 게임 트래픽에 비해선 현저히 작은 트래픽을 운영하긴 하지만, 여러 게임 유저들의 피드백을 수용하고 대 유저 서비스를 개발하는 점이 좋다. 

 

흔히 말하는 네카라쿠배당토 같은 서비스 기업에서는 플랫폼 서비스가 주된 업무이기 때문에 플랫폼 개발자가 주요 인력들이지만, 우리 회사는 게임 개발자가 플랫폼 개발자보다 더 중요한 인력들인 것 같다. (개인적인 의견임)

그럼에도 불구하고 내가 입사할 때 쯔음 게임 개발자와 플랫폼 개발자의 연봉테이블이 같아지면서 나름 만족하며 회사를 다니고 있다.

 

나는 넥슨의 많은 본부 중, 인텔리전스 랩스(이하 인랩)에 소속되어있는데, 인랩은 게임 개발자들이 아닌 플랫폼 개발자들이 많이 소속되어 있고 결제/유저/인증 등 타 플랫폼 업들이 제공하는 서비스도 직접 개발하기 때문에 플랫폼 개발자가 배우며 성장하기에 충분히 괜찮은 것 같다.

 

다만, 언제가 될지는 모르겠지만 플랫폼 서비스기업에서 일해보는 것도 좋은 경험이 될 것 같다.

 

 

2. 배운점


사실 내가 지금 알고있는 대부분의 내용이 입사 후 배운 점들이다.

입사땐 진짜 아무것도 모르는 상태(스프링 찍먹 + 문제풀이 경험(이것마저 java가 아닌 c++))로 들어와서 경험하는 모든 프로세스가 새로 배우는 것들이었다.

 

지난 상반기 회고때 언급한 내용을 포함해 내가 배운점들을 정리해보자면 다음과 같다.

- AWS

- Spring + Java

- 데이터베이스

- 유용한 툴

 

정리해놓고 보니 그냥 백엔드 개발자가 알아야할 기본지식들이지만 놀랍게도 입사땐 아무것도 몰랐다. 

사실 학부생때 모두 깊게 경험하기는 쉽지 않은 내용들인건 맞다. 

4학년때 소프트웨어 마에스트로를 통해 프로젝트 경험도 없었다면 나는 지금도 취업 준비를 하고있었을 것 같다.

 

각 요소에 대해 간단하게 배운점들만 정리해보겠다.

-  AWS

우리 팀은 클라우드 환경을 사용한다.

 

일반적으로 사용하는 서비스들은 거의 경험해본 것 같다.

- Compute (EC2, ASG, Lambda)

- Network (VPC, Subnet, Gateway, Route 53, Load Balancer, API Gateway)

- Storage (S3)

- Database (RDS, ElasticCache - Redis)

- Security (IAM, WAF, Certifcate Manager)

- Application (SQS)

 

등의 서비스를 경험했는데, 직접 클라우드 환경에 인프라를 구축에 참여해서 서비스한 프로젝트들도 있고, 인프라 전문 조직과 협업해서 서비스한 프로젝트들도 있다.

 

최근 진행한 프로젝트들은 개발하기에도 너무 바빠 인프라 전문 조직이 관리해주고 있지만, 이전에 진행했던 프로젝트들은 직접 AWS 콘솔에서 딸깍딸깍을 통해 관리했어서 많은 경험을 할 수 있었다.

이 딸깍딸깍이 너무 불편하고 히스토리 체킹도 어려워서 테라폼을 도입하려고 할 때 쯤, 인프라 전문조직에게 맡기기 시작했다. (테라폼 가이드만 써놓고 실제 적용해보지 못함)

사내 인프라 전문 조직이 버전관리부터 모니터링까지 세세한 부분을 모두 컨트롤 해주시니까 너무 편했다...

 

이 편함을 느끼기 전에 실제 서비스에 직접 적용해본 경험을 가지고 있어서 천만다행이다. 실제로, 딸깍딸깍하며 얻은 지식을 통해 전문 팀과의 인프라 소통을 편하게할 수 있었다. 

 

- Spring + Java

파도파도 끝이 없다.

분명히 강의를 통해 충분히 학습했다고 생각했는데 모르는게 끊임없이 나온다.

더불어 스프링의 강력함도 알아가고 있다.

 

Java 또한 native한 지식이 부족한 점이 약점이다.

각잡고 공부한게 학부생 시절에 자바프로그래밍 수업때가 전부다.

깊게 알고 있지 않아도 서비스 개발에 큰 걸림돌이 되지 않아서 더 공부를 안했던 것 같은데, 요즘 나의 부족한 지식때문에 문제가 하나씩 터지고 있다.

 

그래서 다시 공부를 하려고한다.

척척박사가 되고싶다.

 

 

- 데이터 베이스

하루에 작성하는 쿼리가 학부생때 데이터베이스 수업을 들을때보다 많은 것 같다.

나의 처참한 설계에도 뛰어난 성능을 보여주는 데이터베이스에게 매우 감사함을 느끼고 있다.

 

깊고 어려운 쿼리를 작성할 일이 거의 없기는 한데 기본적인 쿼리를 매일매일 만지작하다보니 재밌긴 하다.

개발때 잠깐 SQL 뽕에 빠져서 서버 배치 대신 DB 프로시저 이벤트 등록을 통해 적용해놓은 것들이 몇개 있는데, 관리가 너무 어렵고 디버깅도 힘들어서 팀원들과 배치 서버 적용을 고려하고 있다. (위에서 언급한)

 

MySQL을 사용하고 있는데, 학부생때도 MySQL 문법으로 수업을 진행했어서 거부감이 없었다.

AWS Aurora MySQL를 사용하고 있는데 설정값을 바꿀때마다 인스턴스/클러스터 파라미터 그룹을 바꿔야하고, 특정 요소에 대해선 DB 재시작을 요구해서 불편한 점이 있긴 하지만 읽기/쓰기 인스턴스를 분리해주고 인스턴스 수를 다이나믹하게 바꿀 수 있는 점이 정말 매력적인 것 같다. (비싸긴 한데 회사가 내줘서 좋다)

 

- 유용한 툴

개발하면서 팀원들이 추천해준 좋은 툴들이 있어서 공유하고자 한다.

 

- Termius

https://termius.com/

 

Termius - SSH platform for Mobile and Desktop

Termius helps to organize the work of multiple DevOps and engineering teams. It reduces the admin work for managing users. Enterprise compliance. SOC2 II report.

termius.com

 

위 툴은 ssh 접속할 때 편리하게 사용할 수 있는 GUI 툴이다. (보급형 푸티)

옛날에 소마할 때, 팀원이 알려줬었는데 너무 좋아서 지금까지 쓰고있다.

 

HOST를 저장해놓고 편하게 관리할 수 있으며, SFTP를 드래그앤 드랍으로 편하게 이용할 수 있다.

포트포워딩도 저장해놓고 껐다켰다 할 수 있어서 개발할때 매우 편리하다.

 

너무 좋아서 팀 계정으로 구매해서 팀원들끼리 공유하며 사용하고 있다.

 

 

- Postman

https://www.postman.com/

 

Postman API Platform | Sign Up for Free

Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.

www.postman.com

 

너무 유명해서 설명은 생략하겠다.

이 역시 팀계정으로 구매해서 사용하고 있다.

 

- DataGrip

https://www.jetbrains.com/datagrip/

 

DataGrip: The Cross-Platform IDE for Databases & SQL by JetBrains

A powerful IDE from JetBrains for SQL on macOS, Windows, and Linux.

www.jetbrains.com

 

그냥 말도안된다.

WorkBench만 써본 나에게는 신세계 그 자체였다. 

 

호스트 관리부터 쿼리 자동완성 등 까지 말도안되는 기능을 가지고 있다.

단점은 콘솔을 열때마다 커넥션을 하나씩 물어서 라이브 DB 같은 곳에 연결할 땐 조심조심 해야하는 점(쓰다보면 열 몇개씩 여는건 일도아님)과 가격이 너무 비싸다는 점.. (은 회사에서 내줘서 좋다)

 

지금까지 써본 툴중에 IntelliJ 다음으로 감탄했던 툴이다. 

젯브레인은 도대체 어떤 곳일까? 젯브레인은 도대체 어떤 곳일까? 젯브레인은 도대체 어떤 곳일까?

 

혹시 안써본 사람이 있다면 써보길 강력추천한다.

 

- Fiddler

https://www.telerik.com/fiddler

 

Fiddler | Web Debugging Proxy and Troubleshooting Solutions

Explore the Fiddler family of web debugging proxy tools and troubleshooting solutions. Easily debug, mock, capture, and modify web and network traffic.

www.telerik.com

 

팀원이 추천해준 패킷캡처 툴이다.

와이어샤크의 http 버전이라고 생각하면 편하다.

 

패킷따서 동시 호출 등 로컬에서 개발할 때 여러 트래픽 테스트에 용이하다. 

 

- Sublime Text

https://www.sublimetext.com/

 

Sublime Text - the sophisticated text editor for code, markup and prose

Available on Mac, Windows and Linux

www.sublimetext.com

 

강력한 메모 툴이다.

멀티커서, Syntax Set 등 유용한 기능이 많다.

 

 

이외에도 배포 프로세스, 미들웨어(큐 등), 컨테이너 환경(도커) 등 많은 것을 배웠지만 글이 너무 길어질 것 같아 이정도로만 작성하겠다.

 

 

3. 협업 프로세스


 

위에 기술한 배운 내용들은 굳이 회사가 아니었어도 마음만 먹었으면 혼자 접할 수 있는 내용들이었다.

 

하지만, 큰 조직내에서의 협업 경험은 쉽게할 수 없다.

 

입사 후, 많은 협업 경험을 한 것 같다.

같은 백엔드 개발자분들 뿐이 아닌 프런트엔드 개발자, 기획자, 데이터 분석가 및 데브옵스 분들 등등 다른 분야의 전문가들과 협업하며 느낀점이 꽤 있었다.

 

- 기획이 제일 어렵다.

하나의 서비스 로직을 개발할 때도 정말 많은 예외 처리들을 신경쓰며 개발해야 해서 막막할 때, 시스템 전체적인 부분을 고려하는 기획자분들을 생각하면 [그래도 내가 낫지]라는 생각으로 위안을 삼는다.

 

여러 개발자 분들이나 PM 분들에게 질문폭탄을 받는 기획자분들을 보면 동정심이 생긴다.

 

- 말을 이쁘게 해야한다.

업무를 진행하다 보면 구두보다는 슬랙을 이용해 메시지를 전달하는 경우가 많다.

표정이나 제스처 없이 텍스트로 메시지를 전달하게 되면 의도와 다르게 전달될 수 있는 것 같다.

 

가끔 다른 분들을 보면 많이 공격적인 어투로 말하시는 분들도 계시는데 나는 괜찮지만 다른 분들이 상처받을까봐 무섭다 ^.^

그래서 최대한 말을 이쁘게 하려고 노력한다.

 

나쁜 고수보다 착한 초보가 되자

 

 

- 협업 툴

꽤 최근까지 우리팀은 아사나를 협업 툴로 썼다.
https://asana.com/

 

온라인에서 팀의 업무, 프로젝트, 작업 관리하기 • Asana

언제 어디서나 Asana로 작업하세요. Asana를 활용하여 근무하는 장소와 관계없이 팀과 조직 전체가 최종 목표, 프로젝트, 작업에 집중할 수 있습니다.

asana.com

 

일정 관리하기도 좋고 팀원들이 현재 무슨일을 하나 보기에도 꽤 괜찮은데 많은 불편함이 있어서 최근 JIRA로 갈아탔다.

한 팀원분께서 팀에 맞게 직접 커스텀도 해주시고 대시보드도 구성해주셔서 정말 편리하게 사용하고 있다.

 

https://www.atlassian.com/ko/software/jira

 

Jira | 이슈 및 프로젝트 추적 소프트웨어 | Atlassian

Jira에서 불가능을 가능으로 바꾸세요. 애자일 팀을 위한 최고의 프로젝트 관리 도구로 세계적인 수준의 소프트웨어를 계획, 추적 및 릴리스하세요.

www.atlassian.com

 

2024년 목표


2023년은 회사 적응 및 백엔드 개발자로서의 기본적인 경험을 하고 배우며 지냈다.

2024년의 목표는 보다 native하고 deep한 공부를 해보는 것이다.

 

특히 Java 언어와 Spring 자체에 대해 깊게 공부해보려고 한다.

지난 1년간 서비스 개발을 하며 느낀 점은 기본적인 언어에 대한 깊은 이해 없이 그저 프레임워크에 의존하며 버그없이 로직만 잘 동작하게하는 작업을 반복한 것 같다.

 

이제는 좀 프로답게 row한 내용들을 이해하며 개발하고 싶다.

기본기! 기본기! 기본기! 기본기! 기본기!

 

돌이켜 생각해보면 2022년 4학년 시작때부터 지금까지 지수함수처럼 계속 성장의 기울기가 커지고 있는 것 같다.

 

블로그 글도 최대한 꾸준히 쓰고싶은데, 새로 얻는 지식들은 대부분 사내 문서에다 적고 있어서 옮겨오기가 너무 힘들다.

자바 다시 공부하면서 글을 써볼까