동기 : 모든 일을 순서대로 처리, 1번 작업이 끝날 때 까지 2번 작업은 무조건 기다려야 한다.
비동기 : 모든 일을 병렬적으로 처리, 1번이 끝나기를 기다리지 않고 바로 2번 작업을 시작
Merge : 히스토리를 남기는 방식, a와 b 브랜치를 합쳤다 라는 기록을 남긴다.
Rebase :히스토리를 재정렬 하는 방식, a 브랜치를 b 브랜치의 최신 작업 위에 붙여준다.
Web Server : 정적 컨텐츠 담당, 보통 앞단에서 가볍게 받으면서 정적/프록시 담당
WAS : 동적 컨텐츠 담당, db조회/계산 등 작업들을 수행하여 결과를 HTML로 만들어 보여준다.
계층별로 역할을 분리하면, 문제가 생겼을 때 원인을 찾기 쉽고, 특정 계층의 장비나 프로토콜만 교체하기 편하다.
7 응용
크롬같은 브라우저, 서비스, 프로토콜
브라우저가 GET 요청 보내는 것
HTTP/HTTPS, DNS, FTP
6 표현
데이터 형식 변환/인코딩/암호화 등
5 세션
통신의 세션(대화) 생성/유지/종료 등
4 전송
TCP 같은 데이터가 빠짐없이 잘 갔는지 확인하는
프로세스 간 통신
포트로 앱 구분
3 네트워크
서로 다른 네트워크 간 라우팅, 주소 지정
IP, 라우터, ICMP
2 데이터 링크
프레임 단위 전송
이더넷, MAC 주소, 스위치
1 물리
케이블 같이 0과 1을 실제로 보내는 층
어떤 사용자인지 증명해주는 정보를 토큰 형태로 들고 다니는 것
자주 쓰는 결과를 빠른 곳에 임시로 저장해두고, 거기서 꺼내 사용하는 것
여러 서버에 트래픽을 분산해서 한 서버에 부하가 몰려 느려지거나 다운되는 걸 막는 기술
웹 브라우저가 보안을 위해 다른 도메인의 리소스 접근을 제한하는 정책
일을 바로 처리하지 않고 발신자(Producer)가 메시지(작업 지시서)로 만들어 큐에 쌓아뒀다가 수신자(Consumer) 꺼내 쓰는 것
예를 들어, 많은 주문이 들어오면 "주문 처리 작업"을 메시지 큐에 넣고 빠르게 "주문 접수됨"을 응답하고 수신가자 큐에서 꺼내서 결제 요청/배송요청 등 작업을 순서대로 처리하게 해준다.
자동으로 빌드와 테스트를 실행해서 문제를 빠르게 발견
테스트를 통과한 코드를 자동으로 배포
사용하지 않는 메모리를 자동으로 찾아서 해제해주는 관리 기법
C나 C++은 개발자가 직접 free()나 delete 해야하는데 Java같은 곳에서는 GC가 관리해준다.
=> 메모리 누수 방지
여러 백엔드 서비스(마이크로서비스) 앞에서 클라이언트 요청을 받아서 적절한 서비스로 라우팅/조합/보안 처리 해준다.