회고/우아한테크코스

[우아한테크코스] 레벨 2 기록

soeun2537 2025. 6. 27. 21:15

💭 들어가며

레벨1 구구조

Spring은 사실 작년에 김영한 선생님의 강의를 통해 깊이 있게 학습한 경험이 있어, 대부분 알고 있다고 생각했다. 하지만 이번 레벨 2를 거치며 그 생각이 오만이었다는 것을 깨달았다. 여전히 모르는 부분이 많았다. 다만 백엔드 공부를 시작할 때 처음 접한 프레임워크가 Spring이었던 만큼, 예전에는 이해하지 못했던 개념들을 이번 복습을 통해 내 것으로 만들 수 있었고, 그 주변 지식을 넓히며 더욱 단단해졌다는 느낌을 받았다.

 

또한 레벨 2는 단순히 하드 스킬뿐 아니라 소프트 스킬 측면에서도 많은 성장이 있었던 시간이었다. 특히 말하기에 대한 다양한 시도를 했고, 나만의 공부 방법을 끊임없이 탐색하며 의미 있는 두 달을 보낼 수 있었다.

 

 

 

✅ 미션 1 - 방탈출 예약 관리

▶ PR

 

 학습

🔽 키워드

  • HTTP
  • Layered Architecture
  • Spring Bean
  • Container
  • IoC

🔽 블로그 정리

 

▶ 고민했던 부분

  • 객체 지향 설계를 꾸준히 연습해 왔던 레벨 1과 달리, 레벨 2에서는 Spring을 도입하면서 객체 지향적인 접근이 어려운 지점들을 마주하게 되었고, 그 과정에서 적지 않은 혼란을 겪었던 것 같다. 이러한 의문은 레벨 2 전 과정에 걸쳐 계속되었고, 여러 토론과 특정 크루의 테코톡을 통해 생각을 결론지을 수 있었다. 결론적으로 객체 지향은 이상적인 설계 철학이며, 이를 지키려는 노력은 설계적인 이점을 가져다준다. 물론 완벽한 객체 지향은 어렵지만, 완벽하지 않더라도 최대한 지키려는 태도가 중요하다는 방향성을 갖게 되었다.

 

 

 

✅ 미션 2 - 방탈출 사용자 예약

▶ PR

 

 학습

🔽 키워드

  • Exception
  • DispatcherServlet
  • Spring MVC
  • Spring MVC Config
  • 인증/인가

🔽 블로그 정리

 

▶ 고민했던 부분

  • 과거 프로젝트에서 MSA 구조에 Passport를 도입해 어노테이션 하나만으로 인증과 인가를 처리했던 경험을 자랑스럽게 글로 작성한 적이 있다. 하지만 Spring MVC 설정을 공부하면서 그 내부 동작 원리인 Argument Resolver와 Interceptor를 알게 되었고, 당시 내가 도입했던 방식이 사실은 프레임워크의 기초적인 메커니즘을 활용한 것이었다는 점을 깨달았다...
  • 인증과 인가에 대해 깊이 있게 공부하게 되었고, 현재 토큰 기반 방식이 주로 사용되는 이유, 과거의 인증 방식은 어땠는지, 세션 기반 방식과 비교해 각각의 장단점 및 보안 관점에서 어떤 차이가 있는지도 분석했다. 해당 개념을 공부하면서 무상태(stateless)에 대해서도 정확히 이해할 수 있었던 것 같다. 

 

 

 

✅ 미션 3 - 방탈출 예약 대기

▶ PR

 

 학습

🔽 키워드

  • DB
  • JPA
  • Spring Data JPA
  • 영속성 컨텍스트
  • 테스트 더블

🔽 블로그 정리

 

▶ 고민했던 부분

  • 과거 JPA를 공부할 때 N+1 문제라는 말을 자주 들었지만, 정확히 어떤 개념인지 이해하지 못했었다. 이번에 다시 공부하면서 N+1 문제가 무엇인지, 그리고 왜 발생하는지 명확히 알게 되었고, 이를 해결하는 방법까지 정리할 수 있었다. 또한 성능을 정밀하게 제어하려면 결국 JPQL이나 QueryDSL 같은 언어나, 더 나아가 JPA를 넘는 프레임워크 사용까지 고려해야 한다는 점도 인식하게 되었다. 이 과정을 통해 JPA는 객체지향 프로그래밍과 관계형 데이터베이스 간의 패러다임 불일치를 해소하기 위한 ORM이며, 빠른 개발을 가능하게 해주는 도구라는 본질도 다시금 이해할 수 있었다.

 

 

 

✅ 미션 4 - 방탈출 결제 / 배포

▶ PR

 

 학습

🔽 키워드

  • 외부 API
  • HTTP Client
  • RestTemplate
  • RestClient
  • timeout
  • AOP
  • 배포
  • Spring/Spring Boot

🔽 블로그 정리

 

▶ 고민했던 부분

  • 외부 API 연동 경험은 이전에도 있었지만, 대부분은 남의 코드를 복사하거나 ChatGPT가 작성해 준 코드를 참고한 경우가 많았다. 이번에는 직접 연동 과정을 경험하면서 각 코드가 담고 있는 의미와, 실제 연동 과정에서 고려해야 할 요소(timeout, 예외 처리)들이 무엇인지 명확히 이해할 수 있었다.
  • 배포 관련해서는 미션 자체에서 깊이 다루지는 않았지만, 최근 AWS Solutions Architect Associate 자격증을 취득하면서 복습한 개념들이 매우 재미있었다. 또한, 배포를 학습하면서 터미널 명령어와 CS의 중요성을 느끼게 되었다.

 

 

 

📚 나만의 학습 방법 찾기

레벨 2 첫 시간에 솔라가 "이번 레벨의 목표는 나만의 학습 방법을 찾는 것"이라고 이야기했던 것이 인상 깊었다. 하지만 당시 나는 뚜렷한 학습 방법이 떠오르지 않았고, 여전히 모르는 것이 생기면 구글링하거나 ChatGPT에게 묻는 방식에 의존하고 있었다. 그래서 이번 레벨에서는 정말 나만의 학습 방법이 무엇인지 알아보기 위해 다양한 시도를 해봤다. 여러 크루들과 토론하고, 생성형 AI를 검색 용도로 활용해 보며, 공식 문서도 꾸준히 참고했다. 그럼에도 뭔가 마땅히 내 학습 방법이라고 느껴지는 방식은 없었다. 그런데 어느 날, 내가 아직 나만의 학습 방법을 잘 모르겠다고 이야기하자 한 크루가 이렇게 말했다. "너 블로그 쓰는 게 학습 방법 아니었어?" 그 말을 듣고서야 왜 그걸 스스로 인식하지 못했을까 싶었다.

 

나는 블로그를 쓰면서 다른 사람에게 틀린 정보를 전달하고 싶지 않아 항상 직접 실습해 보고, 개념을 내 말로 풀어쓰는 데 집중해 왔다. 그리고 시간이 지난 후 잊어버린 개념이 생기면, 다시 내 블로그를 찾아가 복습하는 과정을 반복했다. 그렇게 돌아보니, 블로그를 쓰는 일련의 과정 자체가 나의 학습 방법이었다는 것을 알게 되었다.

 

 

 

💬 스몰 테코톡 스터디

지난 레벨 1에서 나의 마주한 내 약점은 "말하기"였던 만큼, 레벨 2에서는 이 약점을 반드시 극복하고 싶다는 마음이 컸다. 그런 의지로 소수의 크루들과 함께 "스몰 테코톡 스터디"를 시작하게 되었다. 이는 정식 테코톡처럼 발표를 준비하되, 더 작고 편안한 자리에서 발표해 보는 연습을 하는 스터디였다.

 

처음에는 친한 크루 3명 앞에서 발표하는 것임에도 불구하고 많이 떨렸다. 그러나 여러 번 발표를 이어가며 점차 나아지는 모습을 체감할 수 있었고, 함께 스터디를 하던 크루들도 놀라운 속도로 성장하는 것을 볼 수 있었다. 결국 말하기도 연습이 가장 중요하다는 것을 알게 되었다. 그리고 약점이라고 여기는 부분일수록 일부러 그 울타리 밖으로 자신을 밀어내야 완화될 수 있다는 것 또한 알게 되었다!

 

 

 

🥇 테코톡

스몰 테코톡 스터디를 시작한 지 약 4주쯤 되었을 무렵, 테코톡에 나가게 되었다...! 계기는 히스타가 던진 한 주제에서 시작되었다. 바로 "마인크래프트로 배우는 네트워크 기초"라는 주제였다. 언제나 남다른 히스타다운 독특한 주제였고, 나도 왜 그랬는지는 모르겠지만 그 순간 “하면 함”이라는 말로 대답했던 것 같다.

 

그렇게 발표를 준비하게 되었고, 발표 공포증이 있던 나로서는 정말 엄청난 노력이 필요했다. 당시 스몰 테코톡 스터디도 병행하고 있었던 만큼 발표에 진심이었고, 결과적으로는 평소보다 50배 이상 노력했다고 말할 수 있을 정도로 치열하게 준비했다. 발표 결과는 나름 만족스러웠고, 많은 크루들의 격려와 칭찬도 정말 고마웠다. 다만, 한편으로는 이 정도로 노력해야 비로소 만족스러운 결과가 나온다는 사실이 살짝 속상하게 느껴지기도 했다.

 

 

 

🚑 실패 자랑 대회

테코톡 발표 이후, 내가 발표 공포증이 있다는 이야기를 들은 근로 팀의 새로이가 ‘실패 자랑 대회’에 나가보라고 권유해 주었다. 처음에는 거절할 생각이었지만, 새로이의 현란한 말솜씨와 약점을 극복하려면 억지로라도 무대에 서야 한다는 생각이 맞물리며 결국 나가기로 결심했다.

 

테코톡 때도 그랬듯, 실패 자랑 대회 역시 시작 전부터 엄청나게 긴장했다. 단 5분 발표임에도 불구하고 청심환까지 먹고 무대에 섰을 정도였다. 함께 발표하는 다른 크루들은 상대적으로 침착해 보였고, 유독 나만 그렇게 떨고 있는 것 같아 마음이 복잡했다. 많이 속상했고, 그 순간엔 나 자신이 미워지기도 했다. 물론 이때도 꾸준히 연습은 했지만, 페어 활동과 겹쳐 테코톡만큼 영혼을 갈아 넣었다고 하긴 어려웠다. 그래서일까, 발표 결과도 딱 준비한 만큼의 결과가 나왔던 것 같다.

 

 

 

🎬 마무리하며

위의 내용만 보면 다소 우울한 마무리처럼 보일 수 있지만, 사실 전혀 그렇지 않다. 지금 돌아보면, 그때 나를 억지로라도 무대에 내보내지 않았다면 분명 후회했을 것이라는 생각이 든다. 한 번은 브라운과의 원온원에서 "말하기"를 주제로 대화를 나눈 적이 있는데, 그때 브라운이 "발표를 한 나"와 "발표하지 않은 평행세계의 나"는 완전히 다른 미래를 살고 있을 것이라는 말씀을 해주셨다. 그 말 이후로 나는 발표라는 경험을 완전히 다르게 바라보게 되었다. 결과가 어떠했든, 미래의 나는 반드시 지금의 나를 거쳐야만 도달할 수 있기 때문이다.

 

우아한테크코스를 하며 나는 하드 스킬뿐만 아니라 소프트 스킬 측면에서도 많은 고민과 성장을 겪었다. 이곳에서는 정말 많은 사람들과 코딩을 하고, 이야기를 나누며 나와 내 감정들을 마주할 수 있기 때문인 것 같다. 때로는 내 민낯을 마주하는 듯한, 발가벗겨진 듯한 기분이 들기도 했다. 하지만 그런 나 자신을 인정하고 받아들이면서, 진짜 의미 있는 성장을 하고 있다는 생각이 든다. 약점을 마주하는 데서 그치지 않고, 직접 실천하며 한 걸음씩 나아가고 있으니까!

 

이제 레벨 3부터는 팀 프로젝트가 시작된다. 내가 세운 레벨 3 팀 목표는 “밥 같이 먹고 싶은 팀 만들기"이다. 앞으로의 반년이 더욱 기대된다!