[Book] 러닝 HTTP/2

⚠️ 이 글은 기계 번역 위주로 번역되었습니다. 원문은 (en) [Book] Learning HTTP/2를 참고해주세요. 요약 ★★★★☆ - 적극 추천합니다! 그러나 다른 책이나 기사로 약간 대체할 수 있습니다. 이 책은 HTTP 프로토콜의 진행 상황에 대한 유용한 실제 사례와 명확한 설명을 제공합니다. 또한 HTTP 2와 HTTP 1을 명확하게 비교합니다. 이 책에 대한 링크는 Learning HTTP/2 입니다 . 감상평 이 책에 HTTP 프로토콜의 역사가 포함되어 있다는 점을 높이 평가합니다. 이와 같은 기술 서적에서 내가 가장 중요하게 생각하는 것은 실제로 역사적 맥락을 포함하는 것입니다. 기술의 사양과 특징은 인터넷에 있는 동영상이나 기사를 통해 알 수 있지만 기술의 역사를 이해하는 것은 책을 통해서만 가능합니다. 여기에는 버전 0.9, 1.0 및 1.1에서 2.0으로 HTTP 프로토콜의 진행 상황이 포함되었습니다. HTTP/2 헤더에 대한 자세한 설명과 관련 예제가 매우 유용하다는 것을 알았습니다. 책은 읽기가 매우 쉬웠습니다. 느린 읽기 속도에도 불구하고 나는 며칠 안에 그것을 끝낼 수 있었습니다. 취업을 준비하는 학생이나 모르거나 무의식적으로 HTTP 2를 사용하는 엔지니어에게 이 책을 적극 추천합니다. 나도 HTTP2에 대해 잘 몰랐지만 이제 이 주제에 대해 어느 정도 자신감을 얻었습니다. 나중에 이 책을 몇 번 더 다시 볼 생각입니다! 이 책을 통해 HTTP 2에 대해 어느 정도 친숙해질 수 있었지만 솔직히 아직 완전히 이해하지는 못했다. 요약 HTTP 프로토콜의 역사 HTTP 0.9의 탄생 제한된 기능을 가진 간단한 프로토콜 GET 방식만 지원 헤더가 포함되어 있지 않습니다. 열악한 기능에도 불구하고 HTTP 0.9가 널리 사용되었습니다. HTTP 1.0의 탄생 HTTP 0.9 이후 몇 년 후에 개발되었습니다. 헤더, 응답 코드, 리디렉션, 오류, 조건부 요청, 콘텐츠 인코딩 및 압축 및 다양한 방법을 포함하여 HTTP0.9에 비해 크게 향상된 기능을 도입했습니다. 연결을 유지할 수 없습니다. 헤더 Host는 필수가 아닌 선택 사항입니다. 제한된 캐싱 기능. HTTP 1.1의 탄생 20년 넘게 웹 커뮤니케이션을 지배했습니다. 지시문을 사용하여 연결을 유지할 수 있습니다 Connection. 헤더 를 도입하면 Host단일 IP 주소로 여러 웹 서비스를 제공하는 가상 호스팅이 가능합니다. 헤더 Upgrade는 더 높은 수준의 프로토콜에 대한 협상을 허용합니다. 향상된 캐싱 기능 HTTP 2.0의 탄생 멀티플렉싱 - 동일한 도메인 이름과 인증서를 사용하여 동일한 대상에 대한 여러 요청에 대해 단일 TCP 연결을 사용할 수 있습니다. 프레이밍 - 전송되는 데이터의 단위. 데이터 전송은 프레임 단위로 발생합니다. 헤더 압축 - HPACK을 사용하여 유사한 헤더를 압축하여 전송을 최적화합니다. HTTP 1에서 HTTP 2로 전환 HTTP 1에서 HTTP 2로 서비스를 전환할 때 HTTP 1의 성능 최적화 팁이 HTTP 2의 성능을 저하시킬 수 있는 특정 경우를 고려해야 합니다. ...

6월 11, 2023 · 3 분

Istio ingress gateway와 브라우저간에 mTLS로 인증, 암호화하기

시작하며 K8s에서 Istio를 통해 서비스 메쉬를 구현하는 경우, Istio는 알아서 Pod가 사용하는 ServiceAccount에 대한 인증서를 발급해주고 이를 바탕으로 메쉬 내부에서는 mTLS를 이용한 시큐어한 통신이 가능하다. 하지만 메쉬 내부에서 뿐만 아니라 메쉬 외부와도 mTLS로 시큐어하게 통신하고 싶은 경우에는 어떨까? 예를 들어 내 서비스에 VPN 없이 퍼블릭하게 인터넷으로 접근은 가능하지만 해당 서비스를 나만 이용하고 싶은 경우, 내 디바이스에 설치된 인증서를 이용해 내 서버와 mTLS로 통신을 하려면 어떻게 해야할까? 다음 몇 가지 요소들만으로도 Istio를 통해 손쉽게 Ingress gateway단에서 클라이언트(나를 비롯한 유저들)과 mTLS 통신을 지원할 수 있다. ...

2월 24, 2023 · 11 분

Istio를 이용해 데이터베이스에 mTLS로 인증하기 - Redis 예시

시작하며 인증서 방식의 인증 및 암호화는 보안성이 좋고, 경우에 따라 편리하기까지 하다. 경우에 따라인 이유는 인증서 관리가 수작업으로 하기는 참 번거로운 작업이지만 또한 자동화하기 쉬운 작업이기 때문이다. Istio와 같은 서비스 메쉬 솔루션을 이용하면 인증서를 통해 손쉽게 TLS 혹은 mTLS 통신이 가능하다. 회사에서 업무를 보다보면 애플리케이션 컨테이너가 데이터베이스를 이용할 때 mTLS를 통해 인증과 암호화를 하기 위해 initContainer에서 인증서 관련해 별도의 작업을 해줘야하는 경우가 있었다. initContainer 뿐만 아니라 volume과 volumeMount 설정, 데이터베이스 접속을 위한 URL 환경변수 등등 다양한 설정이 복잡해지면서 Helm chart를 수정할 때 실수를 범하게 되는 경우가 종종 있었다. ...

2월 7, 2023 · 9 분

쿠버네티스에서 Pod 종료 시 Istio proxy 컨테이너가 애플리케이션 컨테이너보다 먼저 종료될 때의 해결책: EXIT_ON_ZERO_ACTIVE_CONNECTIONS

시작하며 쿠버네티스에서 서비스메쉬 솔루션으로 Istio를 운영하다보면 Pod가 종료될 때 커넥션이 비정상적으로 종료되는 경우가 종종 발생할 수 있다. Pod가 종료되는 경우는 kubectl delete를 통해 직접 Pod를 죽이는 경우, 롤링 업데이트나 스케일 인을 진행하는 경우 등 다양하다. 커넥션이 비정상적으로 종료되는 이유는 무엇일까? 다양한 경우의 수가 있을 수 있겠지만 아마 대부분 사이드카로 뜨는 istio-proxy 컨테이너가 애플리케이션 컨테이너보다 먼저 종료되는 것이 원인일 것이라고 생각한다. v1.12 이전의 Istio를 이용하던 사람들은 다음과 같이 istio-proxy 컨테이너에 preStop 설정을 추가해 해당 컨테이너에 커넥션이 모두 종료된 후 istio-proxy 컨테이너가 종료되도록 하곤했다. ...

2월 4, 2023 · 5 분

[책] Istio in Action 리뷰

시작하며 저는 데브옵스 엔지니어로 현재(2022년 9월)의 회사에 입사한 후, 기존에 막연하게 궁금증을 가져왔던 Istio라는 제품을 주로 담당하게 됐습니다. 공식 문서와 릴리즈 노트 위주로 Istio를 공부하던 중 팀원분께 Istio in Action이라는 책을 추천받게 됐고, 이 책을 통해 조금 두루뭉실했던 이해와 삽질을 바탕으로 했던 판단들이 좀 더 분명해질 수 있었던 것 같습니다. 그 동안은 지루함으로 인해 책을 다소 멀리 하고 짧은 아티클들을 위주로 학습을 해온 반면 올해 제 목표 중 하나는 책을 통해 좀 더 개념을 잘 정리하고 깊이 있게 공부를 해나가는 것이었습니다. 이 책은 그런 저의 목표에 다행히 잘 부합해줬던 것 같고 정말 간단히 리뷰를 해보려합니다. ...

9월 30, 2022 · 4 분

Virtual Service와 Destination Rule을 이용해 mesh 내부 트래픽을 원하는 대로 라우팅해보기

시작하며 데브옵스 엔지니어로 입사한 뒤 주로 맡고 있는 작업은 Istio 관련 작업이다. 평소 참 관심 있었던 분야이기도 하고 istio 뿐만 아니라 네트워크에 대해 개인적으로 정말 공부해보고싶었는데 덕분에 재미있게 공부하고 성장하며 근무하고 있는 것 같다. 😊 근데 요즘 들어 점점 단순히 ‘어떻게 저떻게 하니까 돌아는가네~ 오.. 나 istio 좀 파악한듯?ㅋㅋ’ 수준의 자세로는 트러블슈팅을 하거나 올바르게 설계하기가 쉽지 않은 경우들이 잦아졌다. 따라서 평소 궁금했던 내용 중 하나를 살짝 파헤쳐볼까한다. 나는 주로 istio ingress gateway와 관련된 작업을 많이 했었고 이 경우 Virtual Service는 항상 ingress gateway를 참조하도록 설정해왔다. 근데 istio를 처음 배울 때는 분명 ‘client 측에서 outbound handler 역할을 하는 Envoy 사이드카을 통해 알아서 우리가 의도하는 목적지를 찾아서 요청을 보낸다.’ 이런 식으로 배웠던 것 같은데 ‘왜 나는 Virtual Service를 이용할 때 항상 Gateway를 설정해줘야하는 것이었을까?’하는 궁금증이 생겼다. ...

8월 11, 2022 · 7 분

Istio와 envoy proxy를 통해 경험해보는 네트워크 인터페이스 (istio 1.10)

시작하며 요즘 istio를 공부하던 중 istio가 변화해온 과정에 대해서도 흥미가 생겨 지난 버전들의 릴리즈 노트들도 읽어보고 있습니다. 그러던 중 현 시점(2022년 7월)에는 이미 공식적인 End of Life가 지난 2021년 3월 처음 릴리즈된 istio 1.10의 릴리즈 노트를 보다가 재미있는 점을 하나 발견할 수 있었는데요. 바로 envoy proxy가 eth0에 대한 요청을 넘겨주는 container의 network interface가 lo 에서 eth0 로 변경되었다는 점입니다. 네트워크에 대해, 그 중에서도 특히 네트워크 인터페이스에 대해 잘 몰랐던 때에는 이 변경사항에 그닥 관심이 안 갔을 것 같은데 최근 네트워크 인터페이스에 대해 공부를 해서인지 이 변경사항에 관심이 갔습니다. ...

7월 17, 2022 · 10 분