스프링캠프 2024 기술 컨퍼런스 후기

들어가며

작년에 이어 2024년 5월 25일 스프링캠프 컨퍼런스가 열렸다.
이번에도 시작된 선착순 티켓팅!! 다행히 이번에는 작년과 다르게 한번에 구매에 성공해 다녀왔다

 

 

SpringCamp2024

SpringCamp2024

springcamp.ksug.org

 

작년에 본듯한 느낌이..

올해는 작년과 다르게 두개의 트랙으로 구성 되어 있었는데, 아래와 같이 참가했다.

13:00 ~ 13:45  Tidy First  안영회
14:00 ~ 14:45  Spring Coroutine In Action  최진영
15:15 ~ 16:00  왜 나는 테스트를 작성하기 싫을까?  조성아
16:15 ~ 17:00  실전! MSA 개발 가이드  김용욱
17:15 ~ 18:00  구해줘 홈즈! 은행에서 3천만 트래픽의 홈 서비스 새로 만들기  이영규

 

작년과 비슷하게 들으며 노션으로 키워드만 정리해 놓았다. 그 중 기억에 남는대로 간략하게 정리하며 느낀점을 적어본다.

Tidy First

켄트 백의 책 Tidy First? 를 번역하신 안영회님의 발표였다. 발표 전, 이미 책을 구매해 읽어보았었는데, 짧지만 많은 생각이 들게 하는 좋은 책이었다. 책을 읽은 후 회사 동료들과 인상 깊었던 내용을 공유했는데, 그 후 세 분이나 책을 구매해서 읽으셨다. 종종 이렇게 개발 문화가 퍼져나가는것에 즐거움을 느낀다.

 

책을 이미 읽은 상태에서 세션을 들으니 많은 내용에서 공감을 하기도 하고, 더 깊이 생각해 볼 수 있었다. 그 중에 책에 없던 내용들의 이야기도 많았는데,  그 키워드들은 아래와 같다.

- 켄트백은 bottom-up 방식을 선호

- 아기 발걸음과 같이 자연스러운 학습!

- 나와 인간관계 활동 익히기

- 팀원 설득 이전에 나부터 설득하기

- 다음책은 Tidy Together

- 오늘 쓴 코드는 내일의 내가 읽는다. 다른사람들과 소통전에 나와의 소통에 집중하자

- 유기체적 공진화

Tidy 시리즈의 첫번째 책인 Tidy First? 는 나 스스로에 대한 이야기이며, 이후 시리즈에서는 동료들과, 회사와의 이야기가 다뤄진다고 한다. 돌이켜보니, 실제로 책에서 다루는 주제들은 내가 어떻게 행동해야 하고, 무엇을 해야 하는지에 대한 이야기가 많았다. 그 중에 가장 기억에 남는 구절은 "모두가 스카우트 규칙(찾았을 때보다 더 나은 상태로 만들기)을 따른다면 시간이 지날수록 코드가 더 살기 좋은 코드가 될 것이다." 였다. 소프트웨어 생태계를 관통하는 중요한 메시지라 생각한다.

Spring Coroutine In Action

코틀린은 직접 써본적이 없어서 자세히 모른다. 해당 발표를 듣게 된 이유는 발표자이신 최진영님은 필자와 비슷한 연차이신데 발표를 하시는 것이 인상깊었기 때문이다. "NEXTSTEP" 에서 "만들면서 배우는 JPA 2기"의 수강 동기라 어느정도 친분이 있는데, 잘하시는것은 알고 있었지만, 이렇게 큰 컨퍼런스에서 발표하시는 모습을 보니 더 대단하게 느껴졌다.

 

이번 발표를 통해 코틀린의 장점에 대해 더 많이 알게 되었다. 업무상 TypeScript를 많이 사용하고 비동기 로직을 많이 작성하는데, 해당 기술의 기초가 코틀린과 비슷한 부분이 있어 이해하기가 어렵지 않았다. 특히 친숙한 MVC 구조에서 Coroutine 을 쓸때 사용할때 주의할 점과, 이유에 대해 깊이 있게 들어가는 부분 덕분에 다음에 코틀린을 공부하게 된다면 좀 더 쉽게 접근할 수 있을 것 같다는 생각이 들었다. 세션을 듣는 사람들이 굉장히 많아 자리가 모자를 정도였는데, 코틀린의 인기가 체감되는 순간이었다.

왜 나는 테스트를 작성하기 싫을까?

발표자이신 조성아님이 테스트와 사랑에 빠지셔서 라이브러리까지 만들게 되시는데, Fixture Monkey 라는 테스트용 객체 생성 라이브러리이다. NEXTSTEP 의 ATDD 과정을 들으며 알게 된 라이브러리인데 가볍게 써보기만 해서, 이렇게 다양한 기능이 있는지 몰랐다.

 

테스트를 사랑하여 많은 테스트를 작성하셨지만, 테스트로 인해 발생하는 비용 때문에 테스트가 싫어졌었다. 그 후 정말 필요한 부분에만 테스트를 작성하게 되었다고 하셨다. 이는 테스트가 항상 좋은 것만은 아니라는 발표의 흐름으로 느껴졌다. Fixture Monkey 를 이용해서 필요한 테스트 케이스들에 다양한 엣지케이스들을 테스트 하는 방법에 대해서도 이야기가 나와서 흥미로웠다. 간략하게 정리해보자면 아래와 같다.

- 테스트를 작성하기 싫은 이유는 비용이 이득보다 커서!! (작성과 유지보수 비용 vs 확장비용)

- 테스트는 내 기대대로 동작하는지 피드백 받는 과정

- 테스트에 많은 기대를 하면 기대만큼 비용이 된다.

- 테스트코드도 읽기 쉬워야 한다.

기술 도입 후 유지보수 비용이 발생하게 되는데, 도입을 주도한 사람이 많은 리소스를 소모하게 된다는 내용이 특히 기억에 남는다. "Fixture Monkey를 도입하고 나서 아름다울 줄만 알았던 세계는 사실 혹독한 세상이었다."라는 이야기는 현재 회사에서 진행 중인 프로젝트와 매우 공감되는 부분이었다. 현 회사에서 Nuxt3를 주도적으로 도입한 후 느꼈던 점들과 많이 닮아 있어, 마음속으로 눈물을 훔치며 세션을 들었다. :)

실전! MSA 개발 가이드

Micro Service Architecture(MSA) 개발 시 고려할 다양한 관점을 제시하는 세션이었다. 특히 MSA 시장이 어느 정도 정리되어가는 현 시점에서, 잘못 사용되고 있는 부분들을 짚어주는 내용이 인상적이었다. 그동안 공부한 내용들과 많은 부분이 일치해, 공부 방향이 틀리지 않았음을 확인할 수 있었다.

 

이 세션도 많은 인기를 끌었는데, 이는 다양한 회사들이 MSA를 도입하고 있으며, 이에 대한 궁금증이 많기 때문이라고 생각한다. 질문 타임때도 모든 세션 통틀어서 질문이 가장 많지 않았나 싶기도 하다. 세션이 끝난 후, 로컬 캐시에 관한 이야기가 알고 있던 개념과 조금 달라 질문을 했는데, 발표를 위해 간략하게 설명하신 부분이라 추가 설명을 해주셨다.

 

개인적으로 실제 업무는 이론처럼 아름답지 못해 부조화가 생기기 마련이다. 모든 것을 만족시키는 것은 쉽지 않지만, 이런 개념들을 알고 있다면 더 나은 구조로 발전할 수 있을 것이라 생각한다.

구해줘 홈즈! 은행에서 3천만 트래픽의 홈 서비스 새로 만들기

카카오뱅크의 홈을 담당하는 팀에서 새로운 서비스로 이관하는 과정을 소개한 세션이다. 구조적 문제와 성능적 문제 두 가지로 나누어 문제를 정의하고 해결해나가는 이야기를 들으며, 그 팀에 합류해 같이 의견을 나눠보고 싶다는 생각이 들었다.

 

실제 "돈" 과 관련된 민감한 서비스이기 때문에 매우 조심스럽게 진행해야 했다. 그 과정 속에서 어떤 고민들을 하고 어떻게 했는지도 매우 인상깊었다. 아키텍처 고민부터, 사용할 기술, 책임의 분배에 이르기까지 동료들과 논의하며 진행된 과정이 인상적이었다.

  • 구조적 문제

"홈" 이라는 도메인 특성상 외부 데이터 구조와 강하게 결합되어 있다보니, 도메인 정책과 외부 의존성이 섞여 있었다. 그 상황에서 생기는 기술 부채를 해결하기 위해 도메인 보호에 특화되어 있는 헥사고날 아키텍처를 도입했다. 러닝 커브가 존재하고, 보일러 플레이트 코드가 많아지는 문제가 있었지만 이를 해결하기 위해 동료들과의 커뮤니케이션과 노력으로 극복하려 했다. 특히, 조회나 캐싱 관련된 책임 분배는 관련 이야기는 실제 업무에서도 고민이 많은 주제라 흥미롭게 들었다. 헥사고날 아키텍처 도입 후 협업은 더 쉬워졌지만, 간단한 기능 신규 구현 시 불편한 점이 있었다는 이야기도 어느 정도 공감할 수 있는 부분이었다.

  • 성능적 문제

"홈" 서비스이다보니, 한 화면에서 다양한 데이터들을 조회해서 조합해야한다. 그렇다보니 다른 팀의 서비스에 조회 로직이 많아지고, 네트워크 비용이 커져서 성능 저하가 일어나는데, 해당 문제를 해결하기 위해 비동기 전략을 사용하기로 했다. 그 과정에서 고려했던 기술은 CompletableFuture와 WebFlux, Kotlin Coroutine 세 가지였다. 그 중 이미 코틀린을 사용하고 있었기도 하고 간결하다는 장점을 가진 Kotlin Coroutine 을 도입했다.

  • 이관 전략

은행 서비스이기에 작은 장애 하나가 치명적일 수 있어 조심스럽게 이관하며 여러 장치를 마련 했다. 응답 비교 서비스를 통해 기존 레거시에서 응답한 값과 새로운 서비스에서 응답될 값을 비교하는 아이디어는 시야를 넓혀주는 흥미로운 이야기였다 . 그 외에도 A/B 테스트와 Fallback 기능도 추가했으며, Fallback 기능을 추가한 덕분에 문제가 생길 뻔한 것을 막을 수 있었다는 손에 땀을 쥐는 이야기도 있었다. 

마무리

이번 스프링캠프 2024에는 아는 사람들이 꽤 많아 더욱 뜻깊은 시간이 되었다. 작년 스프링캠프2023 때에는 첫 기술 컨퍼런스 였었고 기술에만 관심이 많았었다. 개발자는 개발 기술도 중요하지만, 동료들과의 협업도 중요하다. 이번 컨퍼런스는 스프링캠프의 슬로건인 '인연/공유/축제'에 걸맞게 기술 외적인 성장도 했다는 것이 기분좋게 다가왔다.

 

세션을 들으며 작년보다 더 많이 이해하고 공감할 수 있었던 점에서 1년 사이에 많은 성장을 했다는 것을 느꼈다. 성장을 추구한다면 다양한 외부 활동을 통해 시야를 넓히는 것을 추천한다.

'잡담' 카테고리의 다른 글

제4회 Kakao Tech Meet 후기  (0) 2023.12.25
제2회 Kakao Tech Meet 후기  (0) 2023.08.14
스프링캠프 2023 기술 컨퍼런스 후기  (0) 2023.07.31
드디어 블로깅 시작..  (1) 2023.07.04