분류 전체보기 513

HTTP 완벽 가이드 - 4장. 커넥션 관리

프로젝트를 진행하는 팀원들과 "HTTP 완벽 가이드"를 매주 한 장씩 읽으며 돌아가며 한 사람씩 발표를 하고 있다. 읽고 있는 책이 또 한권 늘어나 부담스럽긴 하지만 책 내용이 재밌고 도움이 많이되어 좋은 것 같다. 4장 커넥션 관리 목차 HTTP는 어떻게 TCP 커넥션을 사용하는가? TCP 커넥션의 지연, 병목, 막힘 병렬 커넥션, keep-alive 커넥션, 커넥션 파이프라인을 활용한 HTTP의 최적화 커넥션 관리를 위해 따라야 할 규칙들 TCP 커넥션 TCP 커넥션이 맺어지면 주고받는 데이터들은 손실, 손상되지 않고 순서대로 전달 우리가 아는 3-Way-Handshake는 바로 (4)에서 TCP 커넥션을 맺으며 수행 이 맺어진 커넥션을 통해 통신(Request와 Response)을 하게되고 통신이 ..

Book 2021.11.05

템플릿 메서드 패턴과 콜백 패턴

2021.10.29 - [Spring/Spring Core Advanced] - ThreadLocal ThreadLocal 2021.10.28 - [Spring/Spring Core Advanced] - 로그 추적기 로그 추적기 애플리케이션이 커질수록 모니터링과 운영이 중요해진다. 어떤 부분에서 병목현상이 발생하는지 어떤 부분에서 예외가 발생하는지 minchul-son.tistory.com 앞서 ThreadLocal을 통해 로그 추적기를 개발하고 애플리케이션에 적용시켜보았다. 컨트롤러의 핵심 기능은 서비스를 호출하는 것이다. 하지만 로그 추적기를 적용시키면서 로그를 출력하는 부가 기능 코드가 추가되면서 코드가 복잡해졌다. 핵심 기능과 부가 기능을 더 효율적으로 변경할 수는 없을까? 핵심 기능 핵심 기능은..

Packet Tracer를 통한 TCP, HTTP 분석

TCP 와 HTTP HTTP 완벽 가이드라는 책을 읽으며 프로젝트를 함께 진행하는 팀원들과 스터디를 진행하고 있다. 진행을 하며 팀원분이 직접 패킷을 까보며 진행하면 더 좋을 것 같다는 방향성을 제시해주셨고, 최종적으로 Cisco Packet Tracer를 사용하기로 하였다. 4장. 커넥션 관리라는 주제에 대한 발표를 맡게되어 Cisco Packet Tracer를 사용해 직접 흐름을 보며 패킷을 까보았던 경험이 정말 좋은 경험이었기에 글로 남기려한다. 책 내용 정리한 발표자료 GitHub - MinChul-Son/Book-for-Developer: 개발 관련 도서를 읽고 기록하는 Repository입니다.📚📚 개발 관련 도서를 읽고 기록하는 Repository입니다.📚📚. Contribute to Min..

WEB 2021.10.31

ThreadLocal

2021.10.28 - [Spring/Spring Core Advanced] - 로그 추적기 로그 추적기 애플리케이션이 커질수록 모니터링과 운영이 중요해진다. 어떤 부분에서 병목현상이 발생하는지 어떤 부분에서 예외가 발생하는지를 로그로 확인하는 것은 매우 중요하다. 아래와 같은 요구사 minchul-son.tistory.com 위 글에서 만든 로그 추적기는 파라미터로 트랜잭션 상태를 넘기며 동기화를 하였다. 하지만 이 방식은 모든 메서드에 파라미터를 추가해야하는 등 몇가지 문제가 존재했는데 파라미터를 넘기지 않도록 만들어 이 문제를 해결할 수 있는 방식에 대해 알아보자. 필드 동기화 파라미터를 넘기지 않고 필드를 동기화할 수 있는 방법에 대해 알아보자. 먼저 LogTrace의 인터페이스를 구현한다. be..

로그 추적기

애플리케이션이 커질수록 모니터링과 운영이 중요해진다. 어떤 부분에서 병목현상이 발생하는지 어떤 부분에서 예외가 발생하는지를 로그로 확인하는 것은 매우 중요하다. 아래와 같은 요구사항을 가정한다. 모든 Public 메서드의 호출과 응답 정보를 로그로 출력 애플리케이션의 흐름을 변경하면 안됨 비즈니스 로직에 영향 X 메서드 호출에 걸린 시간 정상 흐름과 예외 흐름 구분 예외 발생시 예외 정보 메서드 호출의 깊이 표현 HTTP 요청을 구분 HTTP 요청 단위로 특정 ID를 남겨 어떤 HTTP 요청에서 시작된 것인지를 구분 가능 트랜잭션 ID ==> HTTP 트랜잭션을 의미 로그 추적기 Version 0 트랜잭션의 깊이를 로그로 남기기 위해서는 이전의 정보를 이어받아 로그로 출력해야한다. 먼저, 트랜잭션 ID와..

무중단 배포 자동화

안녕하세요 !! 😜 Nginx를 통한 Reverse Proxy에 이어 길고 길었던! 무중단 배포 자동화에 대해 이야기해보려합니다. 무중단 배포를 위해 작성한 쉘 스크립트에는 3가지가 있습니다. deploy.sh overwrite.sh rollback.sh 본고에서는 먼저 무중단 배포가 무엇인지를 설명드리고 각각의 쉘 스크립트에 대해 설명드리는 순서로 진행하겠습니다. 무중단 배포 무중단 배포란 말 그대로 서버의 중단 없이 배포를 진행하는 것을 의미합니다. 저희는 Nginx를 사용한 Blue-Green Cycle을 통해 무중단 배포를 진행하였는데 평상시 저희 서버는 Nginx에 두 개의 포트를 연결하여 동작합니다. 이제부터 새로운 버전을 배포하는 곳을 Green, 구 버전을 Blue이라 지칭하겠습니다. 무중..

Server 2021.09.17

Nginx를 통한 리버스 프록시

안녕하세요! 😄 이번 팀 프로젝트에서 Nginx를 사용한 무중단 배포를 맡아 작업을 진행하고 있습니다. 무중단 배포를 위해 현재 Nginx를 Reverse Proxy로 설정해두었는데 이 글에서는 해당 내용에 관해 이야기해보려 합니다. 먼저, Nginx가 무엇인지?, 그 다음으로 Reverse Proxy와 Forward Proxy의 차이점, 마지막으로 저희 서버에 대해 언급을 하며 글을 마무리하겠습니다. Nginx Nginx는 웹 서버(Web Server)입니다. Apache보다 동작이 단순하고 전달자의 역할만 하기 때문에 동시접속 처리에 특화되어 있는데요. Nginx에서는 동시 접속자가 약 700명 이상이라면 Nginx 환경을 권장한다고 합니다. AWS상에서 시장 점유율이 44%에 가깝고 성능이 좋습니다..

Server 2021.09.17

[백준] 2346번 > 풍선 터뜨리기

https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 문제 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있다. 각 풍선 안에는 종이가 하나 들어있고, 종이에는 -N보다 크거나 같고, N보다 작거나 같은 정수가 하나 적혀있다. 이 풍선들을 다음과 같은 규칙으로 터뜨린다...

[백준] 10799번 > 쇠막대기

https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이저는 적어..

9일차

Reactive Programming Flux Flux는 Reactive Streams에서 정의한 Pulisher 구현체이다. 0~N개의 테이터를 발행할 수 있고 하나의 데이터를 전달할 때마다 onNext 이벤트를 발생시킨다. 모든 데이터가 전달 완료되면 onComplete 이벤트가 발생한다. 중간에 에러가 발생하면 onError 이벤트가 발생한다. non-blocking 상태의 Flux는 for문을 통해 하나씩 꺼내어 사용하지 않고 만들 수 있다. just 메서드를 사용해 Flux객체를 만들 수 있다. subscribe 메서드를 사용해 stream형식으로 데이터가 흐르도록한다. range 메서드를 통해 해당 범위의 숫자를 담는 Flux 객체를 만들 수 있다. fromArray를 사용해 위와 같은 새로운..

반응형