티스토리 뷰

끄적끄적

[회고 및 목표] 2021년 회고 및 2022년 목표 설정

망나니개발자 2022. 1. 7. 09:59
반응형

벌써 신입 개발자로 첫 해를 보냈던 2021년을 마무리하는 시간이 되었습니다. 2021년 한 해를 되돌아보면서, 작년의 목표가 잘 지켜졌는지 확인해보고 2022년에 대한 목표를 잡아보고자 합니다. 내년 초에도 마찬가지로 아래의 내용을 돌이켜 보면서 목표가 잘 지켜졌는지 회고하고, 새로운 목표를 잡을 계획입니다.

 

 

1. 2021년 목표 회고


[ 원리를 기반으로 한 공부 ]

2021년에 원리를 기반으로 한 공부를 하자는 목표를 잡았다. 그리고 이번 한 해동안 토비의 스프링과 많은 책들을 기반으로 Spring에 대해 깊이있는 공부를 하면서 목표를 잘 지킨 것 같다는 생각이 든다. 원리를 기반으로 스프링에 대한 많은 부분을 공부하다보니 사내 프로젝트의 통합 테스트 환경을 구축하거나 의존성 정리를 할 때 많은 도움이 되었다. 2022년에도 원리를 기반으로 공부를 하도록 도와주는 책이나 자료들을 많이 찾아보도록 해야겠다.

 

 

[ 프로그래밍 책 읽기 ]

작년에는 많은 책을 읽으면서 성장하는 한 해를 보냈던 것 같다. 2021년 월 별로 읽은 책을 정리하면 다음과 같다.

  • 2월: 객체지향의 사실과 오해
  • 3월: 클린 코드, 이펙티브 자바, 클린 아키텍트
  • 4월: 조엘 온 소프트웨어, 프로페셔널 소프트웨어 개발, 테스트 주도 개발
  • 5월: 토비의 스프링1
  • 6월: 스프링 부트 시작하기 : 차근차근 따라 하는 단계별 실습
  • 7월: 토비의 스프링2
  • 8월: 클린 코더
  • 9월, 10월, 11월: 오브젝트
  • 12월: 코드 컴플리트2

 

몸이 글을 거부하여 읽는 과정이 순탄치지만은 않았지만 책을 읽으면서 확실히 많이 성장하고 있음을 느꼈고 나의 장점 중 하나인 꾸준함으로 내년에도 읽어나가고자 한다.

 

 

[ JPA와 QueryDSL 기반의 사이드 프로젝트 ]

2021년 12월부터 사이드 프로젝트로 기술 면접 구독 서비스를 진행하면서 오랜만에 JPA를 사용하였다. 작년 초에 열심히 공부했던 JPA 내용들을 많이 까먹긴 했지만, 그래도 꾸준히 JPA를 사용해 나가고자 한다. QueryDSL도 이용을 해보았는데 아직 완벽하게 적응은 하지  못했고 꾸준히 사용을 해봐야 할 것 같다.

원래의 목표는 내가 먼저 JPA에 완벽히 적응을 하고 회사에 JPA 도입을 건의하려고 했다. 하지만 사내에서는 MyBatis를 자체적으로 확장하여 사용하고 있었고,  데이터베이스 PK 선정을 복합키로 많이 하여 적합하지 않은 것 같아 따로 도입을 건의하지는 않았다. 사내에서 조건이 맞는 프로젝트를 진행한다면 얘기해보겠지만 가능성이 높아보이지는 않는다. 그러므로 개인 프로젝트를 할 때 열심히 공부하고 적용해야겠다.

 

 

[ 공식 문서를 읽는 습관 ]

완벽하지는 않지만 조금씩 공식문서를 찾는 빈도가 늘어나고 있다. 최근에는 ModelMapper를 사용하기 위해 공식 문서를 찾아봤던 것 같은데, 내년에도 공식 문서와 친해지기 위해 열심히 노력해야겠다.

 

 

[ 경제 및 투자에 대한 공부 ]

개발 관련 공부를 할 것이 많아서 경제 및 투자에 대해 공부는 따로 하지 못하고 있다. 하지만 우량주 위주로 투자를 열심히 하고 있고, 손해는 안보고 있으니 당분간은 열심히 개발 공부에 집중을 해야겠다.

 

 

[ 운동 및 기초체력 향상 ]

올해 6월부터 헬스장을 다니고 시작했고, 지금까지 정말 열심히 꾸준히 다니고 있다. 웨이트 위주로 진행을 했는데 몸은 좋아져도 체력이 좋아지는지는 모르겠어서 최근에 런닝머신을 뛰기 시작했다. 운동 6개월 열심히 해도 아침에 피곤하고 졸린 것 같은데... 잘 모르겠지만 일단은 내년에도 열심히 계속 운동을 하면서 체력을 길러보고자 한다.

 

 

[ 회사 업무에 적응하기 ]

회사에 들어온지 얼마 되지 않은 것 같지만 꽤나 많은 일을 진행했고 나름대로 처음보다는 많이 적응한 것 같다. 처음 입사해서 업무를 했을 때 도메인 지식이 너무 부족한 상태였고, 그러한 결과로 실수도 많았는데 지금 돌이켜 생각해보니 조금 무리한 요구였던 것 같다. 신입이 들어올 때 내가 있을지는 모르겠지만 내가 잘 팔로우하도록 도와줘야겠다는 생각이다.

물론 나도 아직 부족한 도메인 지식이 많기는 하지만 이 부분은 업무를 진행하면서 메꿀 계획이다. 2021 하반기에도 그랬지만 2022년에는 도메인 지식을 배워나가기 보다 전반적인 나의 성장을 초점으로 보낼 계획이다.

 

 

[ TDD(Test-Driven-DevelopeMent) 적용 ]

2021년에 TDD를 공부하고 실무에 적용했던 것은 나의 프로그래밍에 있어 가장 큰 변화였던 것 같다. TDD로 개발하는 친구를 통해 TDD를 접하고 나서 바로 책을 사서 읽었는데 정말 신선한 충격을 받았다. 이후 TDD를 실무에서 적용하고자 예제를 통해 연습하기 시작하였으며 적응이 된 이후에 실무에 적용하기 시작했다. 이를 통해 생산성 향상 및 버그 감소 등 수많은 장점들을 얻을 수 있었다. 그리고 나도 이제는 주변에 TDD를 꾸준히 전파하는 개발자가 되었다.

물론 지금의 나는 항상 TDD를 하지는 않는다. 비지니스 로직이 머릿 속에 명확히 그려지는 경우, 기존의 코드와 유사한 경우, 유지 보수를 하는 경우 등에는 바로 코드를 작성하기도 한다. 대부분 이러한 상황은 로직을 바로 작성하는 것이 생산성이 높아진다고 판단이 되는 상황이다.

그렇다고 테스트 코드를 소홀히 하지는 않는다. 항상 가능한 모든 경우에 대해 테스트 코드를 작성하고 있으며, TDD를 함으로써 얻은 것 중 하나가 바로 테스트 코드의 중요성이기 때문이다. 아직 TDD를 체득하지 못한 분들이 있다면 가장 최우선 순위로 TDD를 올려두기를 권장한다.

 

 

[ Docker, Kubernetes 기반의 ELK 모니터링 시스템 구축 ]

부서에서 배포 후 모니터링이나 문의 대응을 할 때 등 로그를 확인해야 하는 경우가 있다. 문제는 로그를 확인하기 위해 서버에 직접 접속해야 한다는 것인데, 네이버 같은 경우에는 보안 장비가 있어 해당 과정이 상당히 번거롭다. 또한 1개의 프로젝트에 대해 여러 대의 서버가 떠있어서 하나의 프로젝트를 배포하려면 최대 30~40대의 서버에 접속해 로그를 확인해야하는데 이 과정을 매달 진행하다보니 상당히 어지러웠다.

개인적으로 이것은 필수 개선사항이라고 생각하여 ELK 도커 이미지를 만들고 Kubernetes로 배포를 하였다. 서버들은 Logstash를 활용해 로그를 ELK에 전송하여 적재하도록 하여 더 이상 서버에 접속할 필요를 없게 개선하였다. 일을 처리하기 위한 편리성 및 생산성이 매우 향상되었고, 이를 통해 무의미하게 야근하는 시간이 많이 줄어든 것 같다. 혹시 로그 확인을 위해 직접 서버에 접속하고 있다면 당장 모니터링 시스템을 도입하는 것을 강력히 권장한다.

 

 

 

2. 2022년 목표 설정


[ Spring과 Java 더 깊게 공부하기 ]

2021년도에는 많은 Spring, Java 공부를 통해 발전할 수 있었다. 하지만 아직 쓰레드 로컬과 스프링의 세부 코드들(DI 컨테이너, 디스패처 서블릿 ...) 등 조금 더 깊이 있게 살펴볼 부분들이 많이 남아있는 것 같다. 2022년에는 Spring과 Java를 조금 더 깊이있게 다뤄볼 계획이다. 책, 인강, 인터넷 자료 등 다방면으로 공부할 계획이다. 스터디를 운영할까도 계획중인데, 아직 방향을 구상하고 있다.

 

 

[ 프로그래밍 책 읽기 ]

2022년에도 많은 책들을 읽으면서 성장할 계획이다. 2022년에 목표로 하고 있는 책들 목록은 다음과 같다.

  • 모던 자바 인 액션
  • 자바 병렬 프로그래밍
  • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
  • 모던 스프링 인 액션
  • 스프링 입문을 위한 자바 객체 지향의 원리와 이해
  • 스프링 철저 입문
  • 스프링 DI 컨테이너 자료
  • 기타 등등

 

위의 목표로 하는 책들을 보면 거의 자바, 스프링이다. 자바와 스프링은 이미 실무를 하는데 부족한 점이 없을 정도이지만 그래도 깊이있는 공부를 하여 진정한 전문가가 되기 위해 2022년에 관련 책들을 마무리하고 넘어갈 계획이다. 최대한 빨리 자바와 스프링 관련 내용들을 마무리한 후에 스프링 공식 문서를 한번 쭉 읽고 리액티브 프로그래밍(Webflux)나 DDD 또는 대용량 처리 등으로 넘어가면 좋지 않을까 싶다.

 

 

[ 사이드 프로젝트 ]

현재 기술 면접 구독 서비스를 사이드 프로젝트로 진행하고 있다. 오랜만에 마음에 드는 아이디어의 프로젝트를 하고 있는 것 같은데, 최근에 개발자 친구와 기획자 친구를 프로젝트에 참여시켰고, 웹 서비스로까지 확장하고 있다. 올해에는 더 많은 사용자들을 확보하는 것이 목표다.

 

 

[ 회사 부서에 기여하기 ]

일을 하는 것과 별개로 나의 가치도 높이고 부서에 도움도 주기 위해 무언가를 진행하고자 한다. 작년에는 ELK 모니터링 시스템을 구축하며 부서에 기여하였고 올해에는 다음의 두 가지를 부서에서 개별적으로 진행할 예정이다.

  • 서킷브레이커(Resilence4J) 적용
  • Lambda 기반의 문의 담당자 할당 및 알람 보내기

 

우리 부서에서 관리하고 있는 프로젝트 중 하나가 OpenAPI를 위한 게이트웨이 서버이다. 그러다보니 모든 서비스들과 API 통신을 주고 받는데, Spring MVC(멀티 쓰레드) 기반이라 한 서비스에서 장애가 발생하면 덩달아 장애가 발생할 가능성이 매우 높다. 이러한 문제를 방지하기 위해 부서에서도 써킷 브레이커 도입의 필요성을 인지하고 있으므로 써킷브레이커 도입을 진행하겠다고 자원할 계획이다.

또한 부서 내부적으로 매 주 마다 문의 담당자가 문의를 처리하고 있다. 문의는 Yobi(게시판)를 통해 받기도 하는데 메신저가 아닌 메일로 알림이 오고 담당자도 자동으로 할당되지 않아 서로 애매한 경우가 많이 있다. 그래서 람다 기반으로 문의 담당자를 자동으로 할당하고 새로운 문의 글에 대해 알림을 보내주는 기능을 개발하겠다고 제안할 예정이다.

 

 

 

[ 최선의 코드를 작성하기 ]

내가 1년 정도 업무를 하고 진행을 하다 보니 대충 짜여진 코드들 때문에 문제가 생긴 적이 너무 많았다. 문의 대응을 하기 위해 코드를 여기저기 뒤적거려야 했고, 테스트 코드를 작성하는데는 번거로웠고, 유지보수하기도 너무 어려웠다. 이로 인해 불필요하게 잡아먹히는 시간들은 많아졌고, 코드를 대충 짜는 것은 당장의 이익을 위해 미래의 너무 많은 희생을 감수해야 함을 이미 알고 있었지만 원치않게 몸소 겪게 되었다.

물론 PR 코멘트 등도 많이 남기고, 코드 관련 내용도 정리해서 많이 남기는 등을 통해서 좋은 코드로 개선하고자 많은 시도를 했지만... 그다지 효과가 크지는 않았던 것 같다. 그래도 나라도 최선의 코드를 작성해 문제를 줄이자고 생각하였다. 나중에라도 누군가 내 코드를 유지보수할 때 부끄럽지 않게 작업해 둘 계획이다.

 

 

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함