AWS CodeGuru 서비스가 beta 오픈되었다. https://aws.amazon.com/ko/codeguru/ Amazon CodeGuru - Amazon Web Services CodeGuru 프로파일러는 항상 애플리케이션 성능 최적화를 검색하고, 가장 “비경제적인” 코드 줄을 식별하며, 이러한 코드를 수정하여 CPU 사용률을 줄이고 컴퓨팅 비용을 절감하고 애플리케이션 성능을 개선할 방법을 권장합니다. CodeGuru 프로파일러는 비경제적인 객체의 과도한 재생성, 비경제적인 역직렬화, 비효율적인 라이브러리 사용 및 과도한 로깅 같은 문제에 대한 조치를 즉시 취할 수 있도록 구체적인 권장 사항을 제공합니다. CodeGuru 프로파 aws.amazon.com CodeGuru에는 Reviewer와 P..
2019년을 반추해보면 완전하게 살아있지 않은 상태(미생)로 존재했던 거 같다. (뭔 말이야) 무언가에 취해있어 실리, 내실 무엇 하나 제대로 갖추지 못하였다. 여전히 나는 개발자도, 엔지니어도, 교육자도 아닌 엉성한 상태라, 내 미숙한 태도로 어그러진 많은 것들에 회의감 가득한 연말이었다. 나름의 스트레스 관리 프로세스도 제대로 동작하지 않아, 종종 일상을 방전시켜버리곤 했다. 이런 상황에서 그런대로 앞으로 나아갈 수 었었던 건 역시, 포비와 팀원들, 그리고 크루들에게서 받은 에너지 덕분이다. 정말이지 감사한 일들 투성이다. 1월 2일 팀빌딩을 시작으로 교육과정 설계, 마케팅, 선발, 운영, 평가 그리고 12월 27일을 수료식으로 교육 전반의 과정을 경험했다. 불확실했던 것들이 이제 분명해진 덕분인지 ..
이번 포스팅에서는 Real MySQL, 시스템 성능 최적화, 데이터베이스를 지탱하는 기술, 데이터 전문가 지식 포털 을 활용하였습니다. 1. 왜 학습해야 할까? 대부분의 웹 애플리케이션은 DB에서 데이터를 조회하고 저장하는 작업이 주를 이루므로, 통상 서버 처리시간의 70% 이상이 SQL을 처리하는데 사용되곤 한다. (Datastore 비교) 성능과 관련된 이미 여러 글(부하란 무엇인가?, 테크세미나 후기)에서 언급했듯 성능 개선에 앞서 병목지점을 확인하는 것이 중요하다. 2. 어떤 단계로 학습할 것인가? APM을 사용할 경우, 요청의 지연현상을 파악하기가 수월하며, 최근 Google은 Service mesh를 활용하여 SLO 등의 지표로 시스템을 관리하기도 한다. 하지만 도구에 의존적인 학습은 사용법을..
늦어버렸다. 상황을 판단하는 데에는 약간의 시간이 필요했다. 지난 밤 몇몇 지인들과 클리셰한 담화를 나누기는 했지만 무리를 하지는 않았기 때문이다. 이유야 어찌되었건 1년 전부터 약속한 일정 두개가 틀어졌다. 부랴부랴 버스/KTX/SR 모두 찾아보았지만 매진이다. 몇몇에게 미안함을 표하고 몇몇 부탁을 하다 통장 잔고가 2만원 남았음을 깨닫는다. 엉망진창이다. 얼마전 비틀기 동작이 무리였던건지 잠을 잘못 잔 탓인지 몇군데 관절과 날갯죽지가 말썽이다. 침대에 누워있는 자신을 발견하는 게 몇달만인가. 틀어진 일정 사이로 일상이 비집고 들어온다. 눈을 감았다 떴다 하는 사이 기억의 편린이 흩어진다. "그런 일이 종종 있다. 꿈을 꾸긴 했는데 매번 기억이 안난다. 단지 뭔가 사라져버렸다는 느낌만이 잠에서 깬 뒤에..
이번 포스팅에서는 HTTP 완벽가이드 책을 활용하였습니다. 1. Gateway 프로토콜/통신계층/애플리케이션 등 이질적인 두 개의 네트워크 간에 인터페이스를 담당한다. 일반적으로, LAN구간의 Ethernet 망과 WAN 구간을 연결하는 장비를 지칭하기도하며, 3 Layer로 한정할 때 Router 장비가 Gateway 역할을 담당한다. (서버의 Default route 설정이 자동으로 Gateway로 되어 있어 모르는 네트워크에 대한 통신을 할 경우엔 Gateway에게 패킷을 보낸다.) 1) Proxy ARP 다른 네트워크의 MAC 주소를 알아오고 싶을 때 네트워크를 분리해주는 장비(보통 라우터)에서 Proxy ARP를 설정하여 라우팅되어 있는 다른 네트워크 호스트의 MAC 주소를 자신의 것으로 대신 ..
이번 포스팅에서는 HTTP 완벽가이드 책을 활용하였습니다. 7장 Cache 이 포스팅에서는 웹 캐시를 집중적으로 다룬다. 캐싱의 숨겨진 요소들에 대해서는 이 링크를 참조하는 것이 좋겠다. 네트워크를 통해 데이터를 가져오는 것은 하드디스크나 메모리에 비해서 상당히 느리다. 그래서 웹 브라우저는 웹 페이지에 접속할 때 HTML, CSS, JS, Image 등 정적 파일을 캐싱해뒀다가 재사용한다. - 브라우저 캐시 활용 웹 캐시는 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치이다. 웹 요청이 캐시에 도착했을 때, 캐시된 로컬 사본이 존재한다면(cache hit) Origin Server가 아니라 그 캐시로부터 제공된다. - HTTP 캐싱 * 웹 캐시 이점 - 캐시는 불필요한 데이터 전송을 줄여서,..
이번 포스팅에서는 HTTP 완벽가이드 책을 활용하였습니다. 5장 web server는 github의 구현코드를 확인 바랍니다. 추가적으로 Connection 관리 학습을 하며 TCP 밑단 프로토콜 학습을 위한 코드도 작성하였으니 테스트 코드를 돌려보시거나, 직접 코드 수정 후 wireshark로 확인하실 수 있습니다. 6장 Proxy 1. Proxy란? 같은 프로토콜을 사용하는 둘 이상의 애플리케이션을 연결하는 용도로 사용된다. (HTTP version 변환은 가능하며, 상용 Proxy Server는 SSL, 방화벽, FTP 접근 등 웹 기반 애플리케이션을 지원하기 위해 Gateway 기능이 구현되어 있다.) * 서로 다른 프로토콜을 사용하는 둘 이상을 연결하기 위해서는 Gateway를 사용한다. 2. ..
이번 포스팅에서는 HTTP 완벽가이드, 네트워킹과 웹 성능 최적화 기법, 리눅스 커널 이야기, 와이어샤크를 활용한 실전 패킷 분석 책을 활용하였습니다. 4장 Connection 관리 4. Keep-Alive * TIME_WAIT 소켓의 문제점과 대안 패킷 유실에 따른 비정상적인 통신흐름이 발생할 수 있다. 가령, 아래 그림과 같이 마지막 ACK가 중간에 유실될 경우 FIN에 대한 ACK를 받지 못했기에 LAST-ACK상태이고, SYN 요청에 대해 RST를 보낸다. 반면, TIME_WAIT이 있을 경우에는 이상을 감지하여 한번 더 FIN 패킷을 요청한다. active closer(먼저 연결을 끊는) 쪽에서 TIME_WAIT 소켓이 생성된다. [TIME_WAIT이란] TIME_WAIT 상태란 무엇인가 · T..
이번 포스팅에서는 HTTP 완벽가이드, 네트워킹과 웹 성능 최적화 기법, 리눅스 커널 이야기, 와이어샤크를 활용한 실전 패킷 분석 책을 활용하였습니다. 4장 Connection 관리 3. TCP 성능에 대한 고려 TCP의 신뢰성을 보장하기 위한 기능들이 성능과 Trade off되기도 한다. 이에 이번 포스팅에서는 성능을 보완하기 위한 몇가지 조언을 정리해본다. TCP 네트워크 지연은 하드웨어의 성능, 네트워크와 서버간의 전송속도, 요청과 응답 메시지의 크기, 클라이언트와 서버간의 거리에 따라 달라진다. * TCP Connection handshake 지연: 어떤 데이터를 전송하든 새로운 TCP connection을 열 때면, TCP 소프트웨어는 connection을 맺기 위한 조건을 맞추기 위해 연속으로..
이번 포스팅에서는 HTTP 완벽가이드, 네트워킹과 웹 성능 최적화 기법, 리눅스 커널 이야기, 와이어샤크를 활용한 실전 패킷 분석 책을 활용하였습니다. 4장 Connection 관리 2. TCP 오류 복구 기능 (신뢰성) * TCP 3 way handshake는 왕복시간 한번만큼의 latency를 발생시킨다. * TCP Slow start는 connection이 새로 만들어질 때 항상 발생한다. * TCP Flow control과 Congestion control은 모든 Connection의 처리량을 조절한다. * TCP 처리량은 현재 cwnd(Congestion Window) size에 의해 결정된다. 1) 흐름제어 흐름제어는 송신자가 수신자에게 처리하지 못할 만큼의 많은 데이터를 전송하는 것을 미리 ..