블라블라

2023년 회고

jalha 2024. 2. 29. 16:30

 

회사에서 경험한 것들과 기타 2023년에 공부한 것들을 회고하는 형식으로 정리하였습니다.


일하면서 배운점/느낀점

1. DynamoDB

 기존에 프로젝트를 할 때는 JPA와 함께 MYSQL을 사용했습니다. nosql 역시 전에 잠깐 사용한 적은 있지만 다른 사람들이 개발해 둔 것에 기능을 추가하는 식으로 했기 때문에 nosql에 대해 이렇게까지 깊게 보진 않았습니다. 프로젝트를 하면서 설계부터 독특하게 했는데, Single table design이라는 방식으로 설계했습니다. 이때 "오 이게 완전히 RBD와는 다른 설계다!" 라는 것을 느끼면서 개발할 수 있었던 것 같습니다. 비동기로 사용하려고 찾아보고, 비용은 어떤 식으로 들지 확인하고, 어떻게 인덱싱하는 게 좋을지, 유닛은 어떻게 소비되는지 확인해 봐 가며 개발을 진행했습니다. 또한 strong consistency가 필요한 부분이 있어서 eventually consistency와 혼합해서 사용해 보기도 하고, 배치 리드를 사용하면서 전체 데이터를 갖고 오지 못해서 따로 찾아보고 수정해 보는 식으로 진행하기도 했습니다. 그리고 k6를 사용해서 부하를 주고 못 읽어오는 경우를 테스트해서 문제가 발생하는 걸 확인하고 재시도하도록 수정하기도 했습니다.
 이전에 db에 대해 이렇게까지 보면서 개발한 적이 없어서 굉장히 좋은 경험이었습니다. 안 쓰면 까먹겠지만 그래도 일 년 내내 봤으니 아 이거 뭐 있었는데... 하면서 금방 찾지 않을까 싶습니다. 엄청난 변화가 있지 않은 이상 경험한 것들을 가지고 충분히 잘 개발할 수 있겠다는 자신감을 얻었습니다.

 

2. Test Code 

 Kotlin을 사용하기 때문에 Kotest를 통해 테스트 코드를 작성했습니다. 프로젝트의 비즈니스 로직이 굉장히 복잡해서 개발하면서 계속 개발자끼리 합의해야 하는 사항도 많았고 고민해야 하는 부분도 많았습니다. 이때 A를 개발하다가 B를 개발하고 한참 있다가 다시 A를 개발하는 경우가 빈번한데, 이럴 때마다 기억을 끄집어내느라 많은 시간이 소요되었을 것 같습니다. 이럴 때 테스트 코드를 돌려보고 읽으며 다시 기억해 내기 좋았습니다. 또한 코드 수정할 때도 점점 프로젝트가 커지며 이게 다른 곳에 영향이 미친다는 것을 놓칠 때가 있었는데 테스트 코드를 돌려보며 에러를 잡고 찾을 수 있어서 좋았던 것 같습니다. 무엇보다 처음에 비즈니스 로직이 굉장히 헷갈릴 때 테스트를 먼저 작성해 두고 성공시키는 방식으로 개발하게 되니, 하나씩 눈앞에 있는 목표를 격파하는 느낌으로 개발할 수 있어서 좋았던 것 같습니다. 아직 좋은 테스트 코드에 대해서는 잘 모르겠지만 성공 로직에 대한 테스트만 있어도 충분히 도움이 될 것 같다고 생각했습니다. 테스트 코드를 작성하는 게 오래 걸리지만 앞으로도 잘 사용하고 싶습니다.

 

3. WebFlux

 WebFlux 나 리액티브 프로그래밍에 대해 말만 들어봤고 업무로는 경험해 본 적이 없었습니다. 책을 읽을 때 나오면 가끔 본 게 다였습니다. 하지만 23년도 새로운 프로젝트를 진행하면서 WebFlux를 사용하게 되었고, 처음으로 tomcat이 아닌 netty를 사용해 본 것 같습니다. 이론으로만 알았던 것을 직접 개발해 가며 느끼게 되어서 좋았습니다. 인터셉터를 구현할 때 webfilter를 사용해 구현해 봤던 것이라든지, stateless 한 webflux 때문에 ThreadLocal을 사용한 경험이라든지 하는 것은 잊지 못할 것 같습니다. 물론 아직 상당수 소화해야 할 부분이 많지만 이론으로만 접했던 많은 것들을 직접 개발하면서 느낄 수 있게 되어서 좋았습니다. 더 많이 소화해서 나중에 WebFlux 프로젝트를 진행할 때 누구의 도움 없이 홀로 잘 진행하고 싶네요 ㅎㅎ

 

4. Spring Event

 Event.. 굉장히 많은 관심이 있어서 세션도 대부분 이벤트와 관련된 kafka 등을 봤었는데 막상 spring event로 개발해 본 적은 없었습니다. 하지만 23년도 프로젝트를 하면서 기존 서비스에 영향을 미치지 않게 구현해야 하는 부분이 생겼고 이때 사용할 수 있게 됐습니다. 구현 자체는 이런저런 애노테이션을 사용하면 되니까 간단했지만 그래도 이런 상황에서 아 그럼 이렇게 해볼까요? 하고 아이디어를 낼 수 있었던 것도 좋았고, 실제로 구현하면서 사용해 봤다는 사실이 좋았습니다. 사실 이런저런 것들을 봐도 기억이 안 날 수 있는데 딱 오 이럴 땐 이거지! 하고 기억이 나서 평소 직접 사용하지 않아도 보고 듣는 게 도움이 된다는 사실을 겪게 된 부분이기도 했습니다. 앞으로도 열심히 공부하길...!

 


개인공부

 

1. 복습 및 정리

- kotlin 책 중 하나인 쿡북 정리한 것을 다시 훑어 보면서 kotlin 문법을 다시 정리함

- 다시 보는데도 여전히 생소한 것들이 많았음. 언제쯤 익숙해질까..

- 자주 안쓰는 것들은 빠르게 까먹기 때문에 자주 복습을 해야할 것 같다는 생각을 했음

- 드디어 책읽으면서 정리한 것을 복습해서 뿌듯했음. 책읽으면서 정리하는게 다시 안읽으면 쓸모가 없다는 생각이 조금씩 들었는데 복습을 했으니,,, 잘했다 내자신~ 이라는 생각이 들었던 것 같음

 

2. 오브젝트

- 역할, 책임, 협력에 대해 중점적으로 이야기함.

- 설계 초반에는 협력을 위해 어떤 책임이 필요한지에 집중하고, 나중에 동일한 책임을 서로 다른 방식으로 수행할 수 있는 객체들이 필요해질 때가 왔을 때 역할의 도입을 고려하자.

- 캡슐화를 데이터에 한해서만 생각하고 있었는데 변경될 수 있는 어떤 것이라도 감추는 것을 의미한다는 부분에서 생각의 확장을 할 수 있었음. 내가 지금까지 책임 중심 설계가 아니라 데이터 중심 설계를 해왔구나 라는 것을 느낌.

- 그냥 이게 좋아 하고 왜 좋은지 설명하는 게 아니고 안좋은 코드를 하나하나 수정하면서 좋은 코드로 변화시키는데, 이 과정을 보여줘서 더 도움이 됐던 책이었음.

- 내용이 굉장히 좋은데 까먹지 않고 아예 몸에 녹아버리게 자주 복습하는게 좋을 것 같음

 

3. 도메인 주도 개발 시작하기

- 22년도 11월부터 회사 스터디로 읽은 책으로 스터디에서는 골라서 읽었기 때문에 따로 읽었음. 5월이 끝날 때 즈음에 다 읽게 됨. 

- DDD라는 키워드나 생소한 키워드(바운디드컨텍스트, 애그리거트, CQRS)들이 보이지만 결국 더 잘 개발하기 위한 책

- JPA를 사용해 도메인을 어떻게 분리할지 추상적 레벨이 아닌 코드단위로 작성되어 있어서 좋았음. 책이 읽기 쉽게 작성되어 있어서 꾸역꾸역 읽는다는 느낌도 없었음.

- 전체적으로 코드를 기반으로 설명하기 때문에 더욱더 이해하기 쉬웠음

- DDD가 뭔지 감도 안올때 읽기 좋은 책이었던 것 같음. 하지만 어느정도 알때는 다른걸 읽거나 만들거나 고민하는게 나을수도..?

 

4. 함께 자라기

- 금방 읽음. 어려운 내용이 아니기 때문에 술술 읽을 수 있었음.

- 전체적으로 내용이 좋다. 몇권읽었는지 자랑말고 어떻게 활용하는지 반성하라는 부분에서 팩폭을..

- 학습과 관련된 팁도 많았고, 사람들과의 대화와 관련해 좋은 팁들도 많음

- 추상적으로 알고있던 것들도 실험사례같은것들을 참고해 설명하니 좀 더 분명해져서 좋았음

- 메타인지를 높이고 적절한 난이도, 빠른 피드백, 동기를 잊지말고 전문성을 키워나가야겠다는 생각을 했음

- 좀 더 나은 개발자가 되기위해, 더 나아가 좋은 사람이 되기 위해 참고할 내용이 있었기 때문에 틈날때마다 다시 내용을 확인해보는 것도 좋을 것 같음

 

5. 만들면서 배우는 클린 아키텍처

- 한두달에 걸쳐 읽음. 일단 책 두께가 150p 정도로 얇아서 좋음. 각 챕터별 짧게 끊어서 읽을 수 있다는 점도 좋고.

- 가장 흔한 패키지 구조부터 설명하며 육각형 구조를 설명해주니까 그 점이 좋았음 어떤게 안좋으니까 개선해볼까 그럼 이건어때?이런방식으로 설명해서 좋았음. 무턱대고 이게 최고야 좋아 이런장단이 있으니까! 이러면 잘 안남는데 익숙한 controller, repo,entity 패키지 부터 설명하며 가니 좋았음

- 유스케이스 구현하기 부터 앞서 나왔던 와닿지 않은 용어들(입력어댑터등등)을 자연스레 쓰며 설명하는데 첨엔 와닿지 않았음. 좀 생각하고 보니 읽을만해짐. 로직을 어디에 작성하는게 옳을까 등등 평소에 한번은 생각해볼법한 것들에 대해 얘기해주니까 좋았음.

- 와.. 회사에서 마침 뚱땡이 컨트롤러 나눌까말까 얘기를 하고 있던 부분이 있었는데 5장에서 관련내용이 나옴 -> 웹 컨트롤러를 나눌때는 모델을 공유하지 않는 여러 작은 클래스들을 만드는 것을 두려워 해서는 안 됨 등

- 읽을수록 느끼는데 회사에서 프로젝트를 미리해서 접했기 때문에 이해가 되지 책을 먼저봤다면 이해하는데 조금 어려웠을 것 같기도 함. 뭔가 말이 아직 확 와닿지가 않아서? 그랬을것같은 느낌? 느낌 아니고 사실임. 전에 세션에서 들었을때는 잘 와닿지 않았으니까..

 

6. 인프런 강의

[스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술]

- 내가 편하게 사용하고 있던 것들이 어떤식으로 동작하고 있는지 서블릿을 가지고 요청/응답을 거쳐 상세하게 알려줘서 좋았음

- java + servlet → JSP → MVC 패턴 → Spring MVC 흐름을 위와 같은 방식으로 한계 → 해결 → 한계 → 해결 식으로 설명해줘서 자연스럽게 왜 이렇게 되었는지 알려줌

- 항상 사용하고 있었는데 내가 알고 사용하던게 아니었구나 하는 깨달음. 전체적으로 전보다는 더 알 수 있었던 부분이 있어서 좋았던 것 같음.

 


세션/컨퍼런스

 

[NHN FORWARD 22] 편안한 휴식 시간을 지켜줄 안정적인 백엔드 운영과 개발 기법

[NHN FORWARD 22] 분산 시스템에서 데이터를 전달하는 효율적인 방법

[NHN FORWARD 22] API 우선 접근 방식과 OpenAPI Specification

[if(kakao) dev 2022] JVM warm up

[토스 SLASH 22] 애플 한 주가 고객에게 전달 되기까지

 

 

 전부 온라인으로 봤습니다. 22년 세션인 이유는 1,2월에만 봤기 때문입니다ㅎㅎ 세션이 나오면 보고 싶은 것들을 저장해서 보는 편인데, 22년도 세션이 나왔을 때 저장하고 그 이후로는 따로 저장하지 않아서 todo로 정리해둔 세션 리스트가 전부 22년이네요. 23년도에도 많은 세션이 생성되었는데 23년에 만들어진 세션은 하나도 보지 않았습니다. 1분기 이후로는 공부를 안 했다는 게 티가 팍팍 나는 느낌이랄까요. 2분기부터 저는 뭘 하고 있었던 걸까요? ㅠㅠ 귀찮더라도 사람들을 보고 좋은 자극을 느낄 수 있도록 오프라인 모임을 참가할까.. 하는 생각이 드네요. 작년에 오프라인 갔다 와서 다시는 안 갈 생각이었는데,,, 열정이 사그라들 때쯤엔 세션이 있다면 가는 게 좋을 것 같다는 생각이 들었어요.

 

 


총평

https://gaebal-goebal.tistory.com/72

 

2022년 회고 - 3년 개발 후기

이직한 회사에 1년정도 재직하며 경험한 것들과 기타 2022년에 공부한 것들을 회고하는 형식으로 정리하였습니다. 일하면서 배운점/느낀점 1. 캐시 엔티티에 캐시 적용을 하며 캐시에 대한 이해

gaebal-goebal.tistory.com

 

 22년 회고에 작성했던 목표에서 알고리즘이나 블로그 글 작성하는 것은 손도 못 댄 것 같습니다. 강의는 네 개를 생각했지만 한 개만 들었고, 책도 최소 5권을 생각했지만 4권을 봤네요. 정리 및 복습하는 것도 시간이 오래 걸리는 부분은 아니어서 다 할 수 있을 거라고 생각했는데, 4개 주제 중에 한 개만 할 수 있었던 것 같아요 ㅜㅜ 결국 목표를 이룬 건 세션 5개 듣는 거? 하나군요... 
 23년도에 개발에는 힘을 좀 덜 실어서 놀고먹는 데 집중했습니다. 해외, 국내 가릴 것 없이 진심으로 놀았던 것 같아요. 그래서 자꾸 다시 공부하려고 마음 잡는 게 쉽지 않았던 것 같네요. ㅎ 적당히 놀든지 아니면 노는 것을 몰아서 공부 습관을 다시 잡을 수 있도록 하는 게 중요한 것 같다고 생각했습니다. 
 그리고 목표를 설정할 때 좀 더 현실성 있게 정해야겠다는 것을 느꼈습니다. 그냥 보면 금방 한다고 생각하고 이것저것 추가하게 되었는데, 여러 개가 쌓여서 어림도 없는 목표를 설정하고 있다는 걸 느꼈습니다. 그리고 시간이 지나면서 점점 목표를 달성하기 어렵다고 느껴지면 더 안 하게 되는 것 같더군요. 1분기 때 찔끔 보고 2분기 때는 슬금슬금 하다가 3분기부터는 거의 손을 놔버렸더라구요 ㅎㅎ. 그래서 분기별로 다시 돌아보며 잘하고 있는지 확인해야 할 것 같습니다. 이때 너무 어림도 없다면 한 달 정도를 아무 약속 안 잡고 목표를 달성할 수 있도록 노력해 봐야겠다고 계획하고 있습니다.

 회고도 미루고 미루다가 24년 3월 직전인 2월 마지막에 허겁지겁 작성하게 됐네요. 23년도에는 노는 것에 엄청나게 집중했으니 24년에는 다시 중립을 지킬 수 있도록 노력해 볼 생각입니다.

지난달의 나와 이번 달의 내가 큰 차이가 없는 것 같다면 경각심을 좀 갖자!!

24년도에는 개발 공부에 좀 더 힘쓰길 바라며 총평을 마무리하겠습니다.

 


2024년 회고(2024년 12월)까지 목표

1. 인프런 강의 구매한 것들 보기

- mvc2, db1/2, java test

2. 개발관련 책 꾸준히 읽기

- 4권 이상

- 리팩토링, 코틀린으로 배우는 함수형 프로그래밍, 나는 line 개발자입니다, 마이크로서비스 패턴 등

3. 노션 정리 및 복습

- (이건 조금 우선순위가 낮음)

- 코틀린, 디자인패턴, 스프링

4. 사이드 프로젝트

- 두 개 하기

5. 세션 1개 이상 보기