목록CS (44)
공부하는 스누피
프록시 : 클라이언트의 입장에서 트랜잭션을 수행하는 중개인 프록시 vs 게이트웨이 프록시는 같은 프로토콜을 사용하는 둘 이상의 App을 연결하고, 게이트웨이는 서로 다른 프로토콜을 사용하는 둘 이상의 App을 연결한다. 프록시를 쓰는 이유 모든 트래픽을 볼 수 있고, 건드릴 수 있어 부가 기능을 제공할 수 있다. 보안을 강화할 수 있다. (방화벽 프록시) 프록시의 종류 1 - 쓰임에 따른 종류 보안 방화벽 웹 캐시 대리 프록시(Surrogate, 리버스 프록시) 콘텐츠 라우터: 콘텐츠의 종류에 따라 다른 웹 서버와 연결 익명화 프록시(Anonymizer) : HTTP 메시지에서 신원을 식별할 수 있는 특성을 제거해 익명성 보장에 기여함. 프록시의 종류 2 - 배치에 따른 종류 출구(Egress) 프록시:..
SSL (Secure Socket Layer) SSL은 클라이언트와 서버가 주고 받는 데이터의 보안을 제공하는 프로토콜입니다. 클라이언트와 서버 사이의 링크(연결)를 암호화하여 이를 지나는 모든 데이터가 공격받지 않고 노출되지도 않게 합니다. SSL 프로토콜 SSL은 Application Layer와 Transport Layer 사이의 독립적인 계층에 해당되며, 클라이언트가 받은 메시지를 복호화하여 Application data를 넘겨줍니다. Application Layer에서 다루는 메시지 데이터는 SSL에서 여러 조각으로 나뉘어집니다. 각 조각은 압축되고, MAC(Message Authentication Code)가 붙여지며, SHA나 MD5같은 알고리즘으로 암호화됩니다. 이 과정이 끝나면 SSL 헤..
Dual-Mode OS와 사용자는 컴퓨터 시스템의 자원을 공유하기 때문에 시스템 안전성을 위해 특정 실행 모드에 맞는 기능만 수행할 수 있도록 한다. 운영체제 코드를 실행하는 것과 사용자 코드를 실행하는 것을 구분해서 두 가지 모드로 만들었고, mode bit가 현재 모드를 나타낸다. 0이면 운영체제 코드를 실행하는 커널 모드(kernel mode), 1이면 사용자 응용 프로그램을 실행하는 사용자 모드(user mode)이다. 용도에 따라 2개 이상의 모드를 사용할 수도 있다. 이를 Multimode operation이라 부른다. 사용자 모드 사용자를 위해 실행되는 작업은 사용자 모드이다. 이 모드에서 작업을 수행하던 중에 운영체제 기능을 써야 할 때가 오면, 시스템 콜을 통해 사용자 모드에서 커널 모드..
교착상태 (Deadlock) : 한 스레드 집합 안의 모든 스레드가 집합 안의 다른 스레드에 의해서만 발생될 수 있는 이벤트를 무한정 기다리는 상태 ex) mutex lock을 release하는 이벤트는 다른 스레드에 의해서만 발생될 수 있음. 자원을 사용하는 순서 1. 자원 요청 ex. critical section 진입 전 2. 자원 사용 ex. critical section 영역 3. 자원 방출 ex. 작업 완료 후 자원 반납 Livelock - 스레드가 실패한 행동을 계속해서 시도할 때 발생한다. - Race condition 발생 시 자신의 lock을 즉시 release하지만, 교착 상태의 상대도 똑같이 release하기 때문에 같은 행동을 반복한다. Deadlock 조건 1. 상호 배제 Mut..
시간/날짜 blog.daum.net/haanulfafa/7937079 SQL 날짜/시간 함수 - DAYOFWEEK(date) : 해당 날짜의 요일을 숫자로 반환한다. 일요일은 1, 토요일은 7 이다. - 예 : select DAYOFWEEK('1998-02-03'); - WEEKDAY(date) : 해당 날짜에 대한 요일을 반환한다. 월요일은 0, 일요일은 6.. blog.daum.net CASE WHEN THEN select case when 조건1 then 값1 when 조건2 then 값2 else 값3 end 컬럼명; 수학 소수점 N번째 자리수에서 반올림 - ROUND select round(수, 자리수); -- 파라미터 한개면 자동으로 정수로 만들어줌 Type Casting - CAST cast..
서비스 검색 Service discovery 문제 client가 마이크로서비스와 인스턴스를 찾을 수 있어야 한다. 인스턴스의 동적 IP 주소는 인스턴스가 시작될때 할당받아서 HTTP 기반 API를 호출하기 어려워진다. 해결 => 사용 가능한 인스턴스와 서비스를 추적하는 새 컴포넌트(service discovery)를 추가한다. - 방법 1: 클라이언트 측 라우팅으로 클라이언트가 서비스 검색 서비스를 이용해 요청을 보낼 만한 인스턴스를 찾게 한다. - 방법 2: 서버 인프라에 리버스 프록시를 노출시켜 클라이언트를 대신해 적절한 인스턴스로 요청을 전달하게 한다. ex. 넷플릭스 유레카, 넷플릭스 리본, 쿠버네티스 kube-proxy, 쿠버네티스 서비스 리소스 에지 서버 Edge server 문제 공개된 마이..
마이크로서비스 마이크로서비스는 독자적인 업그레이드와 스케일링이 가능한 독립된 소프트웨어 컴포넌트이다. 일체형 애플리케이션과는 달리 마이크로서비스는 여러 개의 작은 서버에 배포할 수 있어 애플리케이션을 쉽게 확장하고 빠르게 개발할 수 있다. 마이크로서비스가 독립된 컴포넌트로 동작하려면 다음과 같은 기준을 충족해야 한다. - 아무것도 공유하지 않는 아키텍처를 유지해야 한다. (ex. 데이터베이스의 데이터 공유 x) - 동기 방식이나 명확한 API를 이용해서만 통신해야 한다. - 개별적인 런타임 프로세스로 배포해야 한다. - 마이크로서비스 인스턴스는 stateless하기 때문에 모든 인스턴스가 요청을 처리할 수 있다. 마이크로서비스 개발은 플랫폼의 각 기능을 독립적인 소프트웨어 컴포넌트로 개발하는 방식으로 이..