1. Establish TCP Connection클라이언트가 서버에게 SSH 요청을 보내면 가장 먼저 서버 - 클라이언트 간의 TCP 연결이 이루어진다. 서버는 주로 Port 22를 listen하고 있고, 클라이언트는 임의의 Port에 바인딩 되어서 TCP Connection이 생성된다. TCP Connection이 생성되면, SSH 세션이 생성된다. 이 SSH 세션 내에서 다음 작업들을 진행하게 될 것이다세션 초기화클라이언트 - 서버 키 교환세션 키 생성신원 인증 등등2. Supported Version NegotiationTCP 연결이 설정되면 클라이언트 - 서버는 SSH 프로토콜 버전을 서로 교환한다. 메세지 형식은 'SSH-2.0-'으로 시작하는 문자열을 교환하는데, 예를 들면 'SSH-2.0-O..
FixtureFixture는 테스트가 시작하기 전 필요한 인자를 제공하거나, 상태를 정의하는데 사용한다. 예를 들어 다음과 같은 역할에 사용할 수 있다. SUT를 생성과 협력 관계의 인스턴스를 미리 설정된 조건으로 생성하고 제공한다. SUT, 혹은 통제할 수 없는 외부 인스턴스의 행동을 미리 지정한다. (Mocking 형태) Basic Fixture 생성해보기class Fruit: def __init__(self, name): self.name = name def __eq__(self, other): return self.name == other.name@pytest.fixturedef fruit_apple(): return Fruit('apple')@pytest..
들어가기 전이 글은 HTTP/2 in action 4장을 읽으며 공부한 글입니다. 4.1 HTTP/1.2가 아니라 HTTP/2인 이유바이너리 프로토콜 (프레임 기반으로 메세지를 주고 받음)동기적이 아니라 다중화 (한 커넥션에서 여러 스트림을 보낼 수 있음) 흐름 제어 (TCP 수준이 아니라 HTTP/2 수준)스트림 우선순위화헤더 압축 (HTTP/1.1까지는 헤더압축 없음) 서버 푸시HTTP/2는 HTTP/1.x 프로토콜의 성능을 개선하기 위해 만들어진 프로토콜이고, 위 개선점이 존재한다. 일반 개발자들은 개발함에 있어서 HTTP/2, HTTP/1.x를 구분할 필요는 없다. HTTP/2 역시 GET, POST 같은 메서드를 사용해 요청하고 200, 300 같은 응답 코드를 받는 방식으로 동작하기 때문이다...
https://armeria.dev/docs/server-annotated-service/#parameter-injection Annotated services — Armeria documentationAnnotated services Visit armeria-examples to find a fully working example. Armeria provides a way to write an HTTP service using annotations. It helps a user make his or her code simple and easy to understand. A user is able to run an HTTP service by fe…armeria.dev https://github.com/..
들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 몇몇 참고 글도 있습니다. 요약 분산 시스템의 스냅샷은 프로세스 / 채널 State가 모두 포함됨. 분산 시스템의 스냅샷을 챈디 - 램포트 알고리즘을 통해서 작성할 수 있음. 챈디 - 램포트 알고리즘은 마커를 이용해서 채널의 State를 정확히 기록함. 10.1 단체 메세징 어플리케이션 문제 10.2 벡터 시계 10.3 전역 스냅샷 분산 시스템에서 특정 시점의 상태를 잘 보존해둔다면 분산 시스템 운영에 많은 도움이 될 수 있다. 예를 들어 장애가 발생해서 분산 시스템을 전체 재기동 해야하는 경우, 해당 시점의 상태로 돌아가는데 사용할 수 있기 때문이다. 분산 시스템에서 상태 보존의 대상이 되는 것은 크게 두 가지..