스터디 개요
팀 구성 및 도서 선택
데브코스 빙봉팀 팀원들, 서브멘토님(총 7명)과 'HTTP 완벽 가이드' 도서로 스터디를 진행하였습니다. 11월 15일부터 12월 14일까지, 총 5회 차의 스터디를 실시했습니다. 이 책은 총 756쪽에 달하는 아주 두꺼운 책인데, 시간 관계상 중요 부분을 함께 보는 것이 좋겠다고 판단하여 12장을 스터디 주제로 선정했습니다.
스터디 방식
매주 수요일 1시 전까지 GitHub Issues를 통해 각자 정리한 학습 내용을 공유하였습니다. 발표자를 미리 정하지 않고, 스터디 당일까지 모든 팀원들이 요약본을 댓글로 정리한 뒤 제비 뽑기로 발표자를 선정했습니다. 발표자는 장별로 10~20분 내외로 책 내용을 요약한 것이나 추가로 조사해 온 것들을 발표하고, 팀원들과 의견을 나누는 방식으로 진행됐습니다.
스터디 내용
기억에 남는 내용 두 가지를 간략하게 소개하겠습니다.
HTTP 요청과 응답
책 내용의 3장에 걸쳐 반복되어 나온 내용이었습니다. HTTP 메시지의 구조를 알아야 내부를 살펴볼 수 있기 때문에 간단하지만 매우 중요한 내용이라고 생각합니다.
HTTP 메시지는 클라이언트와 서버 간의 데이터 교환 방식으로, 요청과 응답 두 가지 타입으로 구분됩니다. 메시지의 구성 요소는 시작 줄, HTTP 헤더, 빈 줄, 그리고 필요한 경우 본문으로 이루어져 있습니다.
그동안 백엔드를 공부하며 postman, intellij HTTP Client를 사용해서 API 테스트를 진행한 적이 많았는데, 이제서야 그때 주고받은 메시지가 이런 형태였음을 확실히 알게 되었습니다.
캐시
웹 캐시는 자주 접근되는 웹 문서나 데이터의 사본을 임시로 보관하는 기능입니다. 캐시를 사용하면 동일한 데이터에 대한 반복적인 요청이 서버까지 가지 않고 캐시에서 처리될 수 있습니다. 따라서 클라이언트는 더 빠르게 데이터를 제공받을 수 있고, 동시에 서버 부하 및 네트워크 트래픽이 감소됩니다. 캐시는 브라우저 캐시, 프록시 캐시, CDN 등 여러 형태로 구현될 수 있습니다.
캐시의 중요성을 잘 보여주는 실제 사례 중 하나는 구글의 YouTube 트래픽 관리 방법입니다. 구글은 각국의 통신사마다 캐시 서버를 설치해서 고객들에게 버퍼링 없이 빠른 속도로 스트리밍이 가능하다고 합니다.
캐시는 ShortURL 구현 과제를 하면서도 고려 대상이 되기도 해서 기억에 남는 내용입니다. 이 과제에서는 긴 URL을 단축된 URL로 변환하고, 이 단축 URL을 통해 원래 URL로 리다이렉트하는 기능을 구현했습니다. 이 과정에서 HTTP 상태 코드 301(영구적 리다이렉션)과 302(임시적 리다이렉션)의 차이가 중요했습니다. 301 상태 코드는 영구적 URL 변경을 의미하며 브라우저 캐시에 저장되는 반면, 302는 임시 변경을 나타내며 방문자 통계를 유지하는 데 적합합니다. 이러한 이해를 바탕으로 과제에서는 방문자 수를 추적하기 위해 302 상태 코드를 사용했습니다.
스터디를 마친 소감
개발 도서를 함께 읽는 스터디는 처음이었는데, 개인적으로 매우 만족스러웠습니다. 혼자 읽었다면 이 짧은 기간 동안에 이렇게 많은 분량의 책을 읽지 못했을 텐데, 스터디라는 강제성 덕분에 목표한 분량을 끝까지 읽을 수 있었습니다. (집에 사놓고 읽어야겠다고 다짐했던 두꺼운 책들이 수두룩...)
또한 랜덤으로 발표자가 정해지기에 책을 단순히 읽고 끝내는 것이 아니라, 내용을 이해하고 나의 언어로 설명하는 연습을 할 수 있었습니다. 한 번의 독서로 책을 완전히 이해했다고 볼 수 없다는 것을 깨달았습니다. '설명하지 못하면 모르는 것이다' 라는 문장에 공감하는데, 책을 한번 읽고 나서 설명할 수 있는 건 아무것도 없었습니다. 내가 직접 설명할 수 있을 정도가 되려면 못해도 두세 번은 읽어야 했기에 그 과정을 통해 내용이 더욱 기억에 잘 남게 되었습니다.
발표자를 당일 제비뽑기로 정한 것은 좋은 방식인 것 같습니다. 간혹 발표자를 미리 정하면 발표자가 아닌 사람은 수동적인 자세가 되기 쉬운데, 모두가 발표자가 될 수 있는 가능성이 있으니 모든 팀원들이 내용에 집중할 수 있었습니다. 다만, 랜덤 추첨 과정에서 동일한 사람이 자주 걸리거나, 스터디가 끝날 때까지 한 번도 발표자로 선택되지 않는 경우도 생겨서 다음 스터디에서는 좀 더 골고루 분배할 수 있는 서브 규칙을 만들면 좋을 것 같습니다.
한편, 아무래도 책 내용상 실습보다는 지식 습득 위주여서 실제 개발에 적용하는 데는 체감 효과는 크지 않았습니다. 나중에 웹 캐시 설정, 커넥션 관련 헤더 설정, 혹은 HTTPS 인증서 적용을 실제로 경험하게 되면 이 책의 내용도 더욱 새롭게 잘 이해할 수 있을 것 같습니다. 또한 책에는 최신 내용이 반영되어 있지 않아 현재 상황과는 조금 뒤떨어진 설명도 있었습니다.
매일같이 HTTP 프로토콜을 이용해 API 를 개발하고 테스트하지만 모르고 사용한 것들이 더 많았다는 것을 느꼈습니다. 앞으로도 이런 스터디를 통해 개발자로서 필요한 지식들을 지속적으로 쌓아가고 싶습니다.
'데브코스' 카테고리의 다른 글
빙터파크 팀 프로젝트 회고 (0) | 2024.01.18 |
---|---|
Spring Security 멀티 필터체인으로 철벽 보안 구성하기 - multiple SecurityFilterChain, multiple Spring Security Configurations (0) | 2024.01.17 |
[데브코스] 1월 2주차 회고 - 팀 프로젝트 마지막 스프린트 (0) | 2024.01.17 |
[데브코스] 1월 1주차 회고 (1) | 2024.01.07 |
[데브코스] 자바 도서관리 미션을 하면서 배운 것들 (1) | 2023.11.23 |