CS
-
[운영체제] Process vs ThreadCS/운영체제 2021. 4. 22. 19:07
Process vs Thread Process 실행중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 할당 받는 시스템 자원 스택 : 로컬 변수와 같은 임시 자료 저장 데이터 섹션 : 전역 변수 저장 힙 : 프로그램 실행 중에 동적으로 할당되는 메모리 Thread 프로세스 내에서 실행되는 여러 흐름의 단위 스레드는 프로세스 내에서 각각 스택만 따로 할당받고 데이터 섹션, 힙 영역은 공유한다. 프로세스 제어 블록 (Process Control Block) 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다. 프로세스는 CPU의 할당을 받아 작업..
-
[네트워크] NettyCS/네트워크 2021. 4. 22. 19:07
Netty? 프로토콜 서버, 클라이언트 등 네트워크 애플리케이션 개발을 쉽고 빠르게 하기 위한 NIO 클라이언트-서버 프레임워크이다. 기존 자바 소켓 라이브러리 블로킹 함수 새로운 클라이언트 Socket마다 새로운 Thread를 할당해야 함 단점? 여러 Thread가 입출력 데이터가 들어오기를 무한정 대기 → 리소스 낭비 많은 수의 Thread가 필요하고 컨텍스트 스위칭이 잦아 오버헤드 발생 자바 NIO (Non-Blocking Input Output) 네트워크 리소스 사용률을 세부적으로 제어하는 Non-Blocking 호출이 포함한다. (비동기적 네트워크 통신) 시스템의 이벤트 통지 API를 통해 논 블로킹 소켓을 등록하면 해당 소켓의 정보를 확인 할 수 있다. Selector에 하나 이상의 채널을 등..
-
[네트워크] gRPCCS/네트워크 2021. 4. 22. 19:06
RPC란? Remote Procedure Call의 약자로 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술 gRPC란? google의 마이크로서비스에서 사용하던 단일 범용 RPC 인프라 Stubby에서 시작 gRPC의 장점 높은 생산성과 효율적인 유지보수 IDL(Identity Definition Lanuage)로 protocol buffers(protobuf)를 사용 IDL만 정의하면 높은 성능을 보장하는 서비스와 메세지에 대한 소스코드가 각 언어에 맞게 자동 생성 다양한 언어와 플랫폼 지원 높은 메세지 압축률과 성능 gRPC는 내부적으로 HTTP/2를 사용하여 헤더의 압축률이 높고 protobuf에 의해 통신 시점에서 바이너리 데이터로 통신하기 때문에 데이터 사이즈가 작다
-
[네트워크] HTTP/2CS/네트워크 2021. 4. 22. 19:06
HTTP/1.1의 단점 TCP 기반 위에서 동작하는 프로토콜이기 때문에 신뢰성 확보를 위해 연결을 맺고 끊는 핸드 셰이크가 이루어진다. HTTP는 비연결성 프로토콜이기 때문에 한 번의 요청과 응답이 끝나면 연결을 끊어 버린다. 핸드 셰이크 오버헤드 극복? Keep-alive 기능 추가 한 번 맺어졌던 연결을 끊지 않고 지속적으로 유지 파이브라이닝 하나의 커넥션에서 한 번에 순차적으로 여러 요청을 연속적으로 하고 그 순서에 맞춰 응답을 받는 방식으로 지연 시간을 줄이는 방법 HOL(Head Of Line) Blocking 이슈 발생 먼저 받은 요청이 끝나지 않으면 그 뒤의 요청이 끝났더라도 기다려야 하는 이슈 HTTP/2 바이너리 프레이밍 계층을 이용해 요청과 응답의 멀티플렉싱을 지원 (양방향 스트림 통신..
-
[네트워크] Sticky SessionCS/네트워크 2021. 4. 22. 17:55
로드 밸런싱 대용량 트래픽을 장애 없이 처리하기 위해 여러 대의 서버에 적절히 트래픽을 분배하는 것 라운드로빈 방식 (Round Robin Method) 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식 가중 라운드로빈 방식 (Weighted Round Robin Method) 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분합니다. IP 해시 방식 (IP Hash Method) 클라이언트의 IP 주소를 특정 서버에 매핑하여 요청을 처리하는 방식 IP 주소를 해싱해 로드를 분산하기 때문에 동일한 서버로 연결되는 것을 보장한다. 최소 연결 방식 (Least Connection Method) 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을..
-
[JAVA] Garbage CollectionCS/개발 언어 (JAVA) 2021. 4. 21. 13:18
stop-the-world GC을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다. stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. 대개의 경우 GC 튜닝이란 이 stop-the-world 시간을 줄이는 것이다. Java는 프로그램 코드에서 메모리를 명시적으로 지정하여 해지하지 않기 때문에 가비지 컬렉터(Garbage Collector)가 더 이상 필요없는 객체를 찾아 지우는 작업을 한다. 이 가비지 컬렉터는 두 가지 가정하에 만들어졌다. 대부분의 객체는 금방 접근 불가능 상태(unreacheable)가 된다. 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재한다. 이 가정의 장점을 최대한 살리기 위해 HotSpot VM에서는 크게 ..
-
스프링의 핵심 3요소CS/개발 언어 (JAVA) 2021. 4. 5. 13:13
제어의 역전 (Inversion of Control) 기본 : 자기가 사용할 의존성은 직접 만들어 사용 IoC : 자기가 사용할 의존성을 누군가가 만들어서 주입 (DI) IoC 컨테이너 Bean 객체를 생성 의존성을 주입 Bean 객체의 Life Cycle을 관리 관점 지향 프로그래밍 (Aspect-Oriented Programming) 횡단 영역의 공통된 부분을 분리 (cross-cutting) Proxy 패턴 적용? 실제 기능을 수행하는 객체(real object)가 아니라 가상 객체(proxy object)를 사용하여 로직의 흐름을 제어하는 디자인 패턴 PSA (Portable Service Abstration) SA? 추상화 계층을 사용하여 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는..
-
[네트워크] OSGI 7 계층CS/네트워크 2021. 4. 5. 01:06
물리 계층 (Physical layer) 상위 계층에서 전달받은 데이터를 하드웨어에서 하드웨어로, 다른 장비에 전기적 신호를 전송하는 역할 데이터 링크 계층 (Data link layer) 두 포인트 간의 신뢰성 있는 전송을 보장하기 위한 계층 비트의 형태로 전송한 데이터를 받는 계층 물리 계층에서 발생할 수 있는 오류를 찾아 수정하는 역할 (오류 수정) 네트워크 계층 (Network layer) 라우팅(routing)을 포함한 패킷 포워딩을 담당하는 계층 전송 계층 (Transport layer) 실 사용자(end-to-end)가 신뢰성 있는 데이터를 주고 받을 수 있도록 해주는 계층 TCP (연결지향, 신뢰성, 흐름 제어) 세션 계층 (Session layer) 응용 프로세스가 맺는 연결에 관한 것들..