이번 포스팅에서는 HTTP 완벽가이드 책을 활용하였습니다. 3장 HTTP 메시지 HTTP 메시지는 HTTP 애플리케이션간에 주고받는 데이터의 블록이다. 모든 HTTP 메시지는 요청 메시지나 응답 메시지로 분류된다. 이번에도 HTTP method 까지의 내용을 코드로 구현해보았다. > https://github.com/brainbackdoor/bbd-http-web/blob/master/docs/message/README.md brainbackdoor/bbd-http-web Contribute to brainbackdoor/bbd-http-web development by creating an account on GitHub. github.com 추가적으로, - 흔히 알고 있는 RESTful에서의 POST..
이번 포스팅에서는 HTTP 완벽가이드, 네트워킹과 웹 성능 최적화 기법 책을 활용하였습니다. 2장 URL과 리소스 URL(Uniform Resource Locator) 는 인터넷의 리소스를 가리키는 표준 이름이다. - URL 문법 (보다 상세한 내용은 직접 코드로 작성하며 확인해보았다.) > https://github.com/brainbackdoor/bbd-http-web/blob/master/docs/url/README.md brainbackdoor/bbd-http-web Contribute to brainbackdoor/bbd-http-web development by creating an account on GitHub. github.com ://:@:/경로;?# RESTful 아래의 내용은 '그런..
정신차려보니 HTTP 완벽가이드 책 뽀개기 모임에 들어와있다. 매주 1챕터씩 읽고 정리하는 것인데, 일종의 콘텐츠를 만드는 방식이다. 책을 보니 1.1 HTTP 개관은 다른 주제들의 정리와 같은 챕터라 어느 정도로 설명할지 애매하여 각 목차들을 어떤 방식으로 학습하고 정리할지에 대한 가이드를 작성하려고 한다. (날로 먹는 느낌인데..😏) 1.2 URL과 리소스: URL 구성요소와 RESTful시 주의점에 대해 살펴본 후 리소스와 관련한 최적화(Concatenation, Spriting, Resource inlining 등)에 대해 정리한다. 1.3 HTTP message: HTTP Spec 문서를 기초로 메시지의 구성요소와 메서드의 동작방식을 정리하고 Java code로 구현해본다. 상태코드를 사용하면서..
이 포스팅은 "도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문" 책을 읽고 스터디한 내용을 다룬 포스팅입니다. "Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker는 소프트웨어를 컨테이너는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있다." - AWS 1. OS를 가상화한 기존의 방식과 Docker는 어떤 차이가 있을까? 하이퍼바이저(VMM) 기술을 이용한 가상화 방식에는 native와 hosted 등 2가지..
이 포스팅은, 서버/인프라를 지탱하는 기술을 읽고 진행하는 스터디의 내용을 정리하였습니다. 성능이란 무엇일까? 암달의 법칙 성능 개선율 = 1/((1-P) + P/S) P: 개선 가능한 부분의 비율 S: 개선된 정도 즉, 성능 개선에는 한계가 생길 수 밖에 없다는 것을 인지하고 작업하여야 한다. 튜닝은 아래의 단계로 진행된다. 1) 원인파악 : 병목지점 파악 2) 목표설정 3) 튜닝실시 4) 개선율 확인 5) 결과 정리 및 반영 결국, 튜닝이란 부하의 원인을 알고 이를 제거하는 것을 의미한다. 그렇다면 부하는 어떻게 확인할까? 우선, 부하를 계측하고자 할 때 top, uptime 등의 툴을 사용하여 Load Average를 확인한다. Load Average가 낮은데 전송량이 오르지 않는 경우 소프트웨어 ..
1) OSI 7 Layer 중 L1,L2 1계층 - Physical Layer - 역할: Bit Stream(이진수 흐름)을 전기, 빛 등의 신호로 변환 - PDU: Bit - 대표장비: 케이블(LAN-UTP, WAH-Serial), 허브, 리피터, 커넥터(LAN-RJ45) 등 2계층 - Data-Link Layer - 역할: 물리적 주소를 이용해 노드(L2 스위치에 연결될 수 있는 3계층 이상의 장비) 간 연결 - PDU: Frame - 대표장비: 브릿지, L2 스위치 등 - 프로토콜 및 기술: LAN - Ethernet Protocol, WAN - PPP, HDLC 등 2) Collision Domain & Broadcast Domain Collision Domain이란, Half Duplex로 다중..
이 포스팅은, 서버/인프라를 지탱하는 기술을 읽고 진행하는 스터디의 내용을 정리하였습니다. DB서버가 정지할 경우로는 크게, mysqld가 비정상 종료함 디스크가 가득참 디스크가 고장남 서버 전원이 고장남 이 중 H/W가 고장난 경우에는 RAID나 다중화 구성이더라도 단시간에 데이터를 복구하기까지 시간 소요가 크다. 이에 실시간으로 복제하는 Replication이 필요하다. MySQL Replication의 master/slave는 1:n관계이다. master는 갱신과 참조 쿼리를 받아들여 바이너리 로그파일로 기록한다. 이 로그파일의 내용이 slave로 전송되고 순차적으로 실행함으로써 복제된다. 즉, 데이터조작쿼리(INSERT, UPDATE, DELETE)는 마스터로, 데이터조회쿼리(SELECT)는 슬레..
이 포스팅은, 서버/인프라를 지탱하는 기술을 읽고 진행하는 스터디의 내용을 정리하였습니다. 왜 리버스 프락시를 도입해야 하는가? Reverse Proxy란, Reverse Proxy는 클라이언트로부터의 요청을 받아서(필요하다면 주위에서 처리한 후) 적절한 웹 서버로 요청을 전송한다. 웹 서버는 요청을 받아서 평소처럼 처리를 하지만, 응답은 클라이언트로 보내지 않고 Reverse Proxy로 반환한다. 요청을 받은 Reverse Proxy는 그 응답을 클라이언트로 반환한다. 통상의 프락시 서버는 LAN -> WAN의 요청을 대리로 수행하지만 Reverse Proxy는 WAN -> LAN의 요청을 대리한다. 클라이언트로부터의 요청이 웹서버로 전달되는 도중의 처리에 끼어들어서 다양한 전후처리를 시행할 수가 있..
이 포스팅은, 서버/인프라를 지탱하는 기술을 읽고 진행하는 스터디의 내용을 정리하였습니다. 다중화란? - 다중화란, 장애가 발생해도 예비 운용장비로 시스템의 기능을 계속할 수 있도록 하는 것을 말한다. 다중화의 대상은 Server, Load balancer, Network Device 등이 있을 수 있다. 단일장애점(SPOF)을 없애고 무중단/고가용성 서비스를 위해 다중화가 필요하다. OnPremise환경에서의 다중화 관점1) 장애를 상정한다.2) 장애에 대비해서 예비 운용장비를 준비한다.3) 장애가 발생했을 때 예비 운용장비로 교체할 수 있는 운용체제를 정비한다.- 유휴장비 역시 비용이므로 ROI에 따라 다중화 수준을 정한다. HealthCheckICMP/Port/HTTP 등을 요청하여 응답여부 체크p..
이 포스팅은 오리뎅이님의 야학(?)을 정리한 내용입니다. 병목구간(bottleneck)이란, 인터넷을 이용하는 Client와 인터넷 Server 사이에 존재하는 네트워크 구간 중 가장 bandwidth가 작은 구간을 말한다. 인터넷 초창기엔 서버의 media speed/스위치나 라우터의 interface/home edge단 link가 모두 100Mbps(Fast Ethernet)이었기에 병목구간이 큰 문제로 부각되지 않았다. 하지만 Gigabit ethernet이 나오면서 상황이 달라졌다. 이전에는 64Kbyte의 window size로 충분히 성능을 낼 수 있었지만, 이후 인터넷 속도가 올라감에 따라 window size를 올릴 수 밖에 없었기 때문이다. (RFC 1323) 서버의 media speed..