📌 I/O ? → 어떤 디바이스를 통해 데이터의 입력(Input)과 출력(Output)이 이뤄지는 작업 입출력 작업은 커널 레벨에서만 수행할 수 있으므로 프로세스 및 스레드는 커널에게 I/O를 요청해야 함. 즉, 프로세스 및 스레드는 호출하는 함수, I/O작업은 호출되는 함수가 됨 Blocking I/O I/O 작업이 진행되는 동안 유저 프로세스가 자신의 작업을 중단한 채, I/O가 끝날때까지 대기하는 방식 → Read()를 호출해 커널에 read I/O를 요청하면, read가 끝날 때까지 application은 block되어 다른 작업을 하지 못함 커널 작업중에 프로세스/스레드는 자신의 작업을 중단하고 대기 커널 작업 중 CPU 자원을 쓰지 않으므로 자원낭비가 심함 여러 클라이언트가 접속하는 서버인 경..
Blocking & NonBlocking → 한 작업이 다른 작업을 호출하는 경우, 호출되는 함수가 바로 리턴을 하는 지 여부에 따라 나뉨 → 누구한테 제어권(작업을 할 권리)가 있는지가 관건 📌 Blocking : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 호출된 함수가 자신의 작업을 완료할때까지 리턴하지 않음 호출된 함수는 자신의 작업을 완료하면 호출한 함수에게 제어권을 넘겨주므로 호출한 함수는 다른 일을 하지 않고 대기함 제어권은 호출된 함수에게 있음 📌 NonBlocking : 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것 호출된 함수가 바로 리턴 호출된 함수가 제어권을 바로 호출한 함수에게 넘겨주어 다른 일을 할 수..
💡 로드밸런싱은 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭 → 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적 ☑️ 트래픽 대처방법 Scale-up : 서버 자체의 성능을 확장 Scale-out : 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것 ☑️ 로드밸런싱 알고리즘 (부하 분산 방식) 라운드로빈 방식 (Round Robin Method) 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있음 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합 가중 라운드로빈 방식 (We..
📌 송신자와 수신자가 암호화된 데이터를 교환하기 위한 일련의 과정 대칭키와 비대칭키 대칭키(비밀키) : 하나의 키로 데이터를 암호화하고 복호화 비대칭키(공개키) : 공개키와 개인키로 암호화 및 복호화 수행 암호화 - 공개키, 복호화 - 개인키 데이터를 암호화하여 보호하기 위한 목적 암호화 - 개인키, 복호화 - 공개키 인증을 위한 목적 CA와 인증서 CA : 인증서의 역할은 클라이언트가 접속한 서버가 의도한 서버가 맞는지 보장하는 것 → 이 역할을 하는 민간기업을 CA(Certificate Authority) 혹은 Root Certificate라고 부름 SSL 인증서 : 서비스의 정보(인증서를 발급한 CA, 서비스의 도메인 등)와 서버측 공개키가 들어있음 SSL Handshake 파란색 : TCP의 3-..
✅ HTTP (Hyper Text Transfer Protocol) 💡 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 → 인터넷에서 하이퍼텍스트(HTML)를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있음 [구조] 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동 상태를 가지고 있지 않는 Stateless 프로토콜 Method, Path, Version, Headers, Body 등으로 구성 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 제 3자가 정보를 조회할 수 있음 ✅ HTTPS (Hyper Text Transfer Protocol Secure) 💡 HTTP에 데이터 암호화가 추가된 프로토콜 → 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3..
🛠️ 모놀리틱(Monolithic) 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이며, 모듈별로 개발을 하고 개발이 완료된 하나의 결과물로 패키징하여 배포되는 형태 장점 개발 초기에는 단순한 아키텍처 구조와 개발이 용이함 단점 서비스 규모가 커짐에 따라 전체 시스템 구조 파악 및 유지보수가 어려워짐 부분 장애가 전체 서비스의 장애로 확대될 수 있음 배포 시간이 오래 걸림 한 Framework와 언어에 종속적 부분적인 Scale-out(여러 서버로 나누어서 일을 처리 방식)이 어려움 🛠️ MSA(Micro Service Architecture) 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프레임워크 여러 개의 서비스를 조합하여 애플리케이션을 구현하는 방식으로 서비..