[우아한테크코스 6기] 레벨 2: 8-9주차 회고

,

이번 주로 모든 레벨 2 과정이 마무리됐다. 저번 주에는 내내 미션하느라 도저히 글을 쓸 게 없어서, 이번 방학주간과 함께 작성하기로 했다 🥴 그마저도 조금 늦었지만 괜찮아 🥲

⚡️ 라이트닝 토크

몇 주 전부터 라이트닝 토크라는 이름으로 간단한 형식의 발표 세미나(?)가 열렸다. 미션을 진행하면서 떠오른 키워드나 학습한 내용을 서로 공유하는 과정이다. 이전에 폴라가 토론을 열어주기도 하고, 로빈이 위키 털린 썰을 예고한 만큼, 나도 배운 내용을 공유하면 좋겠다고 생각했다. 주제를 뭐로 할까 하다가… 최근에 외부 API를 사용하기도 했고, 이 과정에서 테스트 쪽을 삽질해 이 쪽으로 발표하기로 했다.

브리 최고

가볍게 발표하려고 했으나 내가 삽질하는 데 들인 시간이 적지 않다 보니, 테코톡 분량 정도로 발표가 길어지게 됐다. 많이 했던 실수 위주로 발표하고, RestClient와 Builder의 차이점과 테스트 환경 분리까지 잘 담아낸 것 같아 만족했다 😋 지금도 블로그 포스트가 비공개로 작성 중이긴 한데, 확실히 입으로 이야기하던 걸 글로 담아내려니 어렵다. RestClient가 3.3부터 등장해 많은 자료가 존재하지 않는 건 덤이다.

발표를 준비하면서 알게 된 건데, RestClient 쪽 문서에 오타가 있었다. 바로 Spring 오픈소스에 기여했고, 머지되는 경험도 했다 (내가 스프링 기여자라니 👀). 지금은 간단한 오타였지만, 내부 코드를 공부하다 보면 다른 곳을 최적화하는 PR을 날릴지도..? ⚡️

오타 발견 💡

아무튼 내가 알고있는 내용을 다시 정리해 설명하니 확실하게 다가왔다. 다른 크루들도 어떤 것을 테스트해야 하는지에 대한 좋은 인사이트를 얻어갔으면 한다 👏🏻 주변 사람들에게 물어보니 확실히 RestTemplate을 훨~씬 더 많이 쓰는 모양이다. 3.3 마이그레이션 때문이겠지 😅

👏🏻 API 문서 자동화하기

이번 미션에서는 다양한 요구사항이 있었는데, 내가 가장 진땀뺐던 부분이 외부 API를 트랜잭션에서 분리하기API 문서 작성하기다. 단계별로 API 엔드포인트 Response가 달라지고, URL이 추가될 때마다 Readme를 수정했었는데, 여기에서 API 문서를 관리하다보니 빼먹는 경우가 허다했다.

그래서 Swagger랑 Spring Rest Docs를 고민하다가… Spring Rest Docs를 사용하게 되었는데, 이유는 다른 모든 블로그에서 설명하는 그 이유였다. 테스트가 단단해지고, 프로덕션 코드에 API 문서 코드가 침투하지 않는다는 것이다.

이것저것 설정할 게 많았다. 처음에는 기존 RestAssured를 활용해 작성했다. 전체적인 통합 테스트를 짜듯이 작성하다 보니, 테스트의 Given 절에서 Repository 단계까지 내려가 각각의 값을 초기화해주어야 했다. 이게 테스트를 짜는 건지 문서를 짜는 게 과연 맞는건지 하는 생각이 들어서, 중간에 RestAssuredMockMvc로 방향을 틀었다. RestAssured는 원래 Mockito와 함께 사용할 수 없는데, 이를 활용할 수 있도록 돕는 라이브러리인 셈이다.

기존 RestAssured에서 RestAssuredMockMvc로 넘어가는 과정도 순탄치 않았던 걸로 기억한다. 예외를 던질 때 .class로 던지면 내부 메시지가 보이지 않아서 new ~Exception()으로 던져줘야 한다던가, BDDMockito를 잘 다룰 줄 몰라 NPE가 자주 난다던가… 공식 문서나 stacktrace에서 나오는 대로 잘 따라했더니 성공적으로 완성해낼 수 있었다. Mustache 문법까지 한 번 다녀온 것도… 😅

완성된 API 문서는 이곳에서 확인할 수 있다! 이번에도 비밥과 함께했던 리뷰라서 즐겁고 깊게 잘 학습했다고 생각한다. 마지막 미션이라 불사를 줄 알았는데, 생각보다 쉬엄쉬엄 진행했다. 요구사항에 딱 맞게끔만 진행하고 리뷰요청 보내고를 반복해서, 이번에는 이전과 같이 깊게 당하지 않았던 게 여유를 가지는 데 도움이 되었다.

📋 2레벨 회고 – 백지 채워내기

마지막 주에는 항상 버퍼 기간으로, 수료하기 위한 요건을 잘 돌아보고 한 레벨을 마무리하기 위한 주간이 준비돼 있다. 이 과정에서 방학식에 레벨 회고를 하기도, 내가 배운 것에 대한 피드백을 받아보기도 한다. 이번에도 어김없이 흰 종이에 내가 이번 레벨에서 배워나간 것을 채워나가는 활동을 했는데, 키워드가 워낙 방대하다 보니 들으면 아는데 끝까지 키워드 자체가 기억이 나지를 않는 상황이 발생했다 😅

뒤쪽 자리에 제제와 타칸, 레디랑 이야기를 나누면서 백지를 조금씩 채워 나갔는데, 덕분에 기억이 새록새록 나면서 내가 어떤 부분을 헷갈려하는지, 어떤 부분을 이번 레벨에서 확실히 알고 나가는지를 기록해 두었다. 제제도 그렇고 나도 그렇고 크루들 앞에서 발표했던 내용이 가장 빼곡히 적혀있는 걸 보니, 말을 하면서 학습하는 게 참 중요하다는 걸 다시 깨닫는다. 👀

타칸은 마인드맵 형식으로 백지를 빼곡하게 채웠다. 나랑 제제는 키워드별로 소제목을 달아 주욱 나열했다. 크루들마다 다양한 방식으로 복습하고 키워드를 떠올린다는 것도 동기부여가 됐다. 학습 방법을 잘 알았으니, 이제 레벨 3에서 프로젝트를 진행하면서 부딪히는 여러 지식장벽을 잘 헤쳐나갈 수 있을까? 그건 잘 모르겠다 🤷‍♂️

❓ UCPC 나가자고

2024년 알고리즘 대회인 UCPC가 올해에도 열리고, 대학원 신분인 망쵸, 레디와 함께 출사표를 던졌다. 아직은 정해진 게 없고 접수만 해 뒀다. 다들 미션하느라 PS에는 손을 떼서, 이번 년도에는 즐겁게 놀다 오려고 한다. 본선 진출할 수 있으면 그거대로 땡큐..!

팀명 정하느라 애를 많이 먹었는데, 결국 요즘 머리에서 맴도는 수퍼노바 가사를 얹었다. TDD를 하느니 JDK를 하느니 (내가) 말이 많았지만.. 무난무난한 건 역시 케이팝인가 ㅋㅋㅋㅋ

굴러가는 건대 알고리즘 동아리를 보니 잘 되고 있어 보였다. 24학번 중에서도 PS를 좋아하는 분들이 계신다고도 하고… 올해 소중대 탈락이라 걱정은 많이 된다만, 좋은 방향으로 잘 이끌어줬으면 좋겠다 @dldyou 화이팅!

에스파 팀입니다 감사합니다

🏆 레벨 2 수료

어김없이 시간은 지났고, 갈수록 더워지기도 하고. 6월의 절반이 다 지나갈 때가 되니 방학이다. 이번 방학식에는 근로 크루들이 준비한 게임이 진행됐다. 레벨 1 때에는 회고로 가득 채웠어서 데일리 크루들과 이야기하는 것을 기대했었는데, 그런 시간이 준비돼있지 않아 조금 아쉬웠다. 🙃 내내 회고하자고 우리 데일리 사람들한테 이야기하고 다녀서 회고충(잉크가 그랬음 🐛)이라는 이야기도 붙었다. 특히 이번 레벨에서는 미션을 대하는 자세라던지, 학습하는 과정에서 마주한 어려움이 많았어서 더 그랬다. 매주 월요일마다 진행하는 유연성 강화 스터디에서 좋은 영향을 받은 사람 중 한 명이라,, 나중에 기회되면 또 회고하면 되지 뭐!

정말 북적북적하다. 이 많은 사람들이 어떻게 잠실 캠퍼스에 들어가있는지도 신기할 정도였다. 한 공간에 모아두니 사람이 진짜 많았다. 다들 어디에서 숨어서 공부하는 건지… 😅 이런저런 게임을 잘 마치고 어워즈도 받았다. 지금까지 레벨 2동안 리뷰어와 500번 넘게 코멘트를 남긴 유일한 크루라고 한다. 투머치토커라고 마스크를 받았다 😷 지금 아니면 떠들 시간이 없는걸…

모두가 잠실에 모여 공부했지만, 각자가 걸어가는 방향은 모두 달랐던 레벨 2. 이번 레벨동안 잘 학습했고, 여전히 레벨 3에서의 팀프로젝트는 실감나지 않는다. 절반이 선릉과 잠실로 나눠지고 새로운 프론트/안드로이드 크루들과 만나게 되고… 모두가 잘 해나갈 수 있을거라고 믿는다. 우리 지금까지 잘 했잖어 🔥

Categories