지난 주말에 Spring Camp 2024 다녀오고 나서 좀 늦은 감이 있지만 후기를 써보려고 한다.
이번에도 마찬가지로 콘서트 티켓팅을 예약하듯 인프런 사이트 들어가서 후다닥 신청해서 티켓팅에 성공하였다!
지난번보다 장소가 크기도 하고 발표도 많아서 인원을 많이 수용하겠구나라고 생각이 들었는데 1분 정도에 다 마감이 되었다고 해서 관심이 더 많아졌네라고 생각이 들었다.
세션 진행 전!
세션에 들어가기
이번에 총 두가지의 트랙으로 진행이 되었는데 모두 듣고 싶었지만 관심이 있는 분야를 기준으로 트랙을 선정하여서 들었다.
이외에 세션들은 유튜브를 통해서 들을 예정이다. (스프링캠프는 영상을 올려주시니 관심 있는 분들은 추후에 들으시면 좋을 거 같아요!)
이번에 방해가 되지 않는 선에서 사진을 찍어달라는 말을 잘 못 받아들여 사진을 적극적으로 찍지 못하였다. (후회 중..)
동시성의 미래 - 코루틴과 버츄얼 스레드 - 이상훈
Java 21에 버츄얼스레드가 공식으로 추가됨에 따라 코틀린과 융합하여 사용하고자 하는 노력을 들을 수 있었고
전통적인 웹방식, 코루틴, Webflux, 버츄얼스레드를 한번에 정리해 주셔서 코틀린과 코루틴을 아직 학습하지 않은 나도 이해가 되어 의미가 깊었고
네트워크 블록킹 기간이 나름 큰 LLM서버를 서빙하는 서버를 전제를 가정하여 진행하여 코루틴이 스레드 블로킹 I/O 한 작업 있다면 성능상 분리한 부분을 버츄얼스레드를 같이 활용하면 해결할 수 있다는 것을 알려주셔서 같이 혼용해서 사용하면 좋겠구나!라는 생각이 들었다.
spring coroutine in action - 최진영
두 번째 세션은 코틀린에서 코루틴이 돌아가는 동작구조와 Spring에서 코루틴을 적용하는 방법에 대해서 설명해 주었는데
사실은 코틀린을 제대로 학습하지 않아서 돌아가는 원리나 구조에 대해선 잘 들었지만 그 이후에는 이해가 되지 않아 다시금 영상을 통해 확인해봐야 할 것 같은 세션이었다.
그래도 이렇게 한 땀 한 땀 구조를 분석하신 것에 대해서 박수를 보내고 싶다.
왜 나는 테스트를 작성하기 싫을까? - 조성아
픽스처 몽키를 메인 커트리뷰터이신 조성아 님께서 픽스처 몽키를 도입한 계기와 테스트에 대한 작성비용과 개발비용사이에 대한 내용을 풀어가주셨는데,
그중 공감이 되었던 게 나도 처음에는 많은 사례를 테스트해야지라는 욕심에 과도하게 여러 테스트케이스를 작성하고 나서 개발 코드작성시간에 대해서 생각해 봤는데 점점 테스트 작성시간이 너무 많아지고 비용이 많아지다 보니 테스트의 본질(테스트를 통한 피드백)을 잊게 되는 경우가 많았는데 다시 불필요한 테스트를 작성하는 게 아닌지?라고 회고 하는 세션이었다.
테스트 비용을 결정하는 요소 (이 부분을 줄여보자)
1. 작성하는 로직이 어떤 요청이 필요한지 (GIVEN) - 작성 비용 -> 테스트를 복잡하게 작성하려 한다.
2. 어떤 결과 가나 와야지 하는지 (Then) - 유지보수 비용 -> 하나의 테스트에서 많은 검증
실전! MSA 개발 가이드 - 김용욱
MSA를 개발할 때 풀어야 할 방법들에 대해서 설명을 해주셨던 세션이었다.
주요하게 풀어나간 점
- 자주 참조 되는 데이터에 대한 처리 -> 로컬 캐시 활용
- 여러 API를 조회함으로써 발생하는 N+1 API 조회 -> 일괄조회 API
- 이벤트나 재시도에 대한 여러 번 요청에 대한 대응 -> 멱등성 있는 API 및 소비자 설계
구해줘 홈즈! - 이영규
카카오뱅크에서 계층 간 의존성이 많이 오염되어 있던 구조적 문제와 MSA상의 성능상의 이슈를 해결하기 위해 개편을 진행을 한 내용을 설명해 주셨다.
구조적 인문제는 헥사고날 아키텍처를 도입하여 도메인로직을 보호하고 의존관계를 정리하였고, 성능상의 문제는 코루틴을 이용하여 해결 을 하였다.
사실 이 부분보다 놀라웠던 점은 역시나 은행이란 도메인에서 안정적인 이관 전략을 수립했다는 대단했다고 생각이 들었다.
안정적인 이관을 하기 위해 기존 응답과 신규응답을 비교하는 서비스를 만들었고 해당 서비스에서 표본검사를 진행하여 데이터 검증을 진행했고 A/B 테스트와 fallback (신규 서비스 장애 시에도 기존 서비스로 전달) 그중 fallback을 도입하고 나서 쓰고 있지 않다고 판단했던 API를 제거하였는데 사실은 쓰고 있었고 그 부분을 서비스 장애 없이 식별했다고 한다.
이 안정적인 이관전략을 수립하기 위해 고민한 내용들을 들어보고 개발기술뿐만 아니라 여러 부분에서 인사이트를 얻어서 조합해야겠구나 라는 생각이 들었다. 사실 혼자 이관이라고 응답 비교 서비스까지만 생각했지 혹시 모를 fallback이나 A/B테스트를 통해서 빠르게 전환하거나 장애의 대응에 대해서는 생각하지 못했을 것이다.
이번 스프링 캠프는 어땠을까? (후기)
개인적으로 부스를 탐방해서 다른 회사의 개발적인 이야기를 해보고 싶었는데 소원성취를 한 것 같고 이번 발표 세션에서 코틀린에 대해서 너무 많이 언급이 되어서 이제는 정말 코틀린을 찍먹이라도 시작해야겠구나...
그리고, 커피브레이킹시간에는 새로운 만남?을 기대하고 낯선 사람에게 이야기를 하면서 네트워킹을 해보자.라고 시도를 해봤는데 생각보다 시간이 짧아 아쉽게 느껴졌습니다.
마지막으로는, 지난 2023년도 보다 큰 규모로 열려 다시금 스프링 개발자들에게 열정을 느낄 수가 있었고 적용후기나 사례를 들으면서 인사이트를 얻어서 매우 자극이 되었던 현장이었다. 못 들은 세션들은 추후에 영상으로 공개되는 부분을 다시 봐야겠다.
여담이지만, 이제 이직하는 회사에서는 스프링 하고 떨어져 있어야 된다는 생각에 너무 아쉽게 생각이 든다. 흠..
feat. airpod..................
실은 행사가 끝나고 집에 도착하고 나서 에어팟을 분실했다는 사실을 알아버렸는데 어디서 분실했는지 추적도 안되어 기분이 너무 별로였는데, 스프링 캠프 일꾼단이 신 고경석 님께서 연락이 와서 다행히도 찾을 수 있었다.
찾으러 가는 과정에서 사실 airpod만 전달받을 줄 알았는데 감사하게도 경석님과 잠시나마 이야기를 나눌 수 있었는데, 내 부주의로 잃어버린 airpod을 스프링캠프에 분실물에 대한 공지가 없었다는 것을 미안하게 생각하시면서 보완해야 하는 점으로 기록하시는 모습에 Spring Camp가 계속 지속 가능한 부분은 KSUG 일꾼단분들이 치열하고 열심히 준비하시는구나를 느꼈었다.
그 이후 경석님과 도란도란 여러 이야기를 나눌 수 있어서 기분이 치유가 되어 너무 좋았던 시간이었다.
다시 한번 찾아주신 분과 보관해주신 경석님에게 감사하다는 말씀드립니다!
그리고 열심히 준비해 주신 KSUG 일꾼단분들 고생하셨습니다.