목록CS (13)
Arthur's Blog

배경지식 gRPC는 Google에서 개발한 RPC(Remote Procedure) 시스템이다. 전송을 위해 TCP/IP 프로토콜과 HTTP 2.0 프로토콜을 사용하고 IDL(Interface Definition Language)로 protocol buffer를 사용한다. RPC(Remote Communication Mechanism) RPC(원격 프로시저 호출)는 한 프로그램이 네트워크의 세부 정보를 이해하지 않고도 네트워크 안의 다른 컴퓨터에 있는 프로그램에서 서비스를 요청하는 프로토콜이다. RPC는 client-server 모델을 사용한다. 클라이언트에서 서비스를 요청(function call)하면 서버에서 서비스를 제공한다. RPC 개념 HTTP 프로토콜 HTTP(Hypertext Transfer ..
CORS Cross-Origin Resource Sharing(CORS)은 추가적인 HTTP header를 사용해서 애플리케이션이 다른 origin의 리소시에 접근할 수 있도록 하는 메커니즘을 말한다. 하지만 다른 origin에서 내 리소스에 함부로 접근하지 못하게 하기 위해 사용된다. CORS 필요성 만약 내가 서비스하고 있지 않은 사이트에서 세션을 요청해서 세션을 획득할 수 있다면 해당 사이트는 악의적으로 내 세션을 탈취하거나 다른 행동을 할 수 있다. 그래서 브라우저에서는 이러한 요청을 막는다. 피싱사이트가 대표적인 공격 사례인데, 이러한 것을 막고 내가 허용한 origin들만 요청할 수 있도록 하기 위해 필요하다.
Session은 In memory / File storage / Database storage에 저장을 하는데, 서비스를 확장하거나 한 플랫폼에 여러 서비스가 존재하는 경우 DB 또는 메모리를 공유하기 어렵다. 그에비해 JWT는 Client가 accessToken 또는 refreshToken을 소유하고 있는데, 한 플랫폼 내부에 여러 서비스가 존재하더라도 secretKey만 일치하다면 인증을 할 수 있다. 위의 이유들로 MSA와 같은 한 플랫폼 내부에 여러 서비스가 존재하는 경우 Session보다는 JWT를 애용한다.
REST API 개요 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻한다. REST는 Representational State Transfer의 줄임말이다. API(Application Programming Interface)란 애플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트이다. 때때로 API는 정보 제공자와 정보 사용자 간의 계약으로 지칭되고, 소비자에게 필요한 콘텐츠(Request)와 생산자에게 필요한 콘텐츠(Response)를 구성한다. 컴퓨터나 시스템과 상호 작용하여 정보를 검색하거나 기능을 수행하고자 할 때 API는 사용자가 원하는 것을 시스템에 전달할 수 있게 지원하여 시스템이 이 요청을 이해하고 이행하도록 할 수 있다. API를 사용자 또는..
소프트웨어를 이용한 해결방법의 문제점 다중 스레드 또는 임계영역보다 복잡한 문제로 일반화하기가 쉽지 않음. 이를 위해 세마포어사용. 특히 원자적 연산에 대한 하드웨어 지원이 가능한 경우 효과적인 모니터사용. 세마포어 연산(P연산, V연산), 모니터 연산 3. 세마포어(Semaphores) 1. 세마포어 개요 세마포어 개요 동기화를 위한 도구 음이 아닌 정수값을 갖는 플래그 변수 다익스트라가 상호배제를 극복하기 위해 제안 세마포어의 유명한 예 : 열차 진행 여부를 알리는 차단기 세마포어 연산 세마포어 변수 1. 카운팅 세마포어 (Counting Semaphore) S의 크기 : 총 사용 가능한 자원의 갯수 S는 자원의 개수로 초기화 됨 S의 범위는 한정되어 있지 않음 2. 이진 세마포어 (Binary Se..
1. 상호배제와 동기화 상호배제(Mutual Exclusion) 특정 공유자원을 한 순간에 한 개의 프로세스만 사용할 수 있는 경우 프로세스 하나가 데이터에 접근하는 동안 다른 프로세스가 해당 데이터를 접근할 수 없게 하는 것 동기화(Synchronous) 공유자원을 동시에 사용하지 못하게 프로세스들이 상호 협력하면서 수행하는 것 순차적 재사용이 가능한 자원의 공유를 위해 질서 있는 실행을 보장하고 데이터 일관성 유지해줌 경쟁상태(Race Condition) - 여러 개의 서로 다른 프로세스가 동일한 자료에 접근, 자료를 조작하여 그 결과가 접근 순서에 따라 달라지는 상황 => 동기화 필요 => 임계영역을 이용한 상호배제로 구현 2. 프로세스 동기화 임계영역(critical section, CS) 개념 ..
단순한 네트워크 두 개의 컴퓨터가 통신이 필요할 때, 다른 컴퓨터와 물리적으로(이더넷 케이블) 또는 무선(WiFi)으로 연결되어야 한다. 모든 현대 컴퓨터들은 이러한 연결 중 하나를 이용하여 연결을 지속할 수 있다. 이런 네트워크는 두 대의 컴퓨터로 제한되지 않는다. 원하는 만큼의 컴퓨터를 연결할 수 있다. 그러나 이렇게 연결할수록 매우 복잡해진다. 예를 들어 10대의 컴퓨터를 연결하려는 경우 컴퓨터 당 9개의 플로그가 달린 45개의 케이블이 필요하다. 이 문제를 해결하기위해 네트워크의 각 컴퓨터는 라우터라고하는 특수한 소형 컴퓨터에 연결된다. 이 라우터에는 단 하나의 적업만 있다. 주어진 컴퓨터에서 보낸 메시지가 올바른 대상 컴퓨터에 도착하는지 확인한다. 컴퓨터 B에게 메시지를 보내려면 컴퓨터 A가 메..

병행프로세스란? 병행프로세스 개념 프로세스들이 독립적으로 작업을 수행하거나 또는 다른 프로세스와 협력하며 특정 기능 수행 상호작용 필요 - 제한된 자원을 공유하지 위해서는 프로세스는 서로 동기화되어야 함 비동기 병행 프로세스 : (비동기) 다른 프로세스들의 진행상태를 전혀 모르고 각기 독립적으로 수행하면서 (병행) 다수의 프로세스들이 동시에 존재하며 공유자원에 접근할 수 있는 프로세스 -> 프로세스들이 동시에 자원 및 데이터에 접근할 수 있으므로 동기화 알고리즘이 필요 병행프로세스 과제 공유자원을 서로 베타적으로 사용 병행프로세스 사이에는 협력 또는 동기화가 이루어져야 한다. 두 프로세스 사이에는 데이터 교환을 위한 통신이 이루어져야 한다. 프로세스는 동시에 실행되는 프로세스의 속도와 관계없이 일정한 실..