RESTful API 나는 RESTful API를 api를 개발하는 데에 있어서 "예상 가능한 개발을 위한, 개발자들 간의 약속"이라고 이해했다. 실제로 RESTful API는 기존의 SOAP이 프로토콜로써 개발자 간의 약속을 표준화시킨 것과 다르게, 기존에 존재하는 HTTP 프로토콜의 메서드를 기반으로 하는 "아키텍처"이다. API란? 📌 애플리케이션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의 REST란? 📌 Representational State Transfer(REST): API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어짐 REST 기반 아키텍처를 사용하여 대규모..
HTTP 멱등성 HTTP 멱등성이란? Idempotent Methods A request method is considered "idempotent" if the intended effect on the server of multiple identical requests with that method is the same as the effect for a single such request. Of the request methods defined by this specification, PUT, DELETE, and safe request methods are idempotent. Like the definition of safe, the idempotent property only applies to..
컴퓨터 : 하드웨어와 소프트웨어를 관리하는 운영체제와 CPU, 메모리 등으로 이루어짐. 1. 운영체제의 역할과 구조 1] 운영체제의 역할 1) CPU 스케쥴링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원할당 및 반환 관리. 2) 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당할지 관리. 3) 디스크 파일 관리 : 디스크 파일을 어떤 방법으로 보관 할 지 관리. 4) I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터간에 데이터를 주고받는 것을 관리. 2] 운영체제의 구조 - 유저 프로그램과 하드웨어 사이를 운영체제라고 부름 cf) 리눅스 서버 : GUI 없이 CUI만 있음. 더보기 * GUI : 사용자가 전자장치과 상호 작용할..
CF) CPU : '메모리'에 올라와 있는 프로그램의 명령어들을 실행할 뿐. 1. 메모리 계층 : 레지스터, 캐시, 저장장치. - 레지스터 : CPU 안에 있는 작은 메모리. 휘발성. 속도 : 가장 빠름. 기억용량 : 가장 적음. - 캐시 : L1, L2 캐시를 지칭. 휘발성. 속도 빠름. 기억용량 적음. (L3캐시도 있음). - 메모리(RAM, 주기억장치) : RAM. 휘발성. 속도 : 보통. 기억용량 : 보통. ㄴ HDD로부터 일정량의 데이터를 복사, 임시저장 후 필요시마다 CPU 에 전달. - 보조기억장치 : HDD, SDD를 일컬음. 휘발성. 속도낮음, 기억용량 많음. 1] 캐시(cache) : 데이터를 미리 복사해 놓는 임시 저장소. - 빠른 장치와 느린 장치에서 속도 차이에 따른 병목현상을 줄..
* 운영체제(OS, Operating System) : 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스. - 한정된 메모리나 시스템 자원을 효율적으로 분배. - cf) 펌웨어(firmware) : 운영체제와 유사하지만, 소프트웨어를 추가로 설치할 수 없는 것. 1. 운영체제와 컴퓨터 2. 메모리 3. 프로세스와 스레드 4. CPU 스케줄링 알고리즘
네트워크(Network)란? 네트워크 : 컴퓨터 등의 장치들이 통신기술을 이용하여 구축하는 연결망을 지칭하는 용어. - 노드(node)와 링크(link)가 서로 연결되어있거나 연결되어있지 않은 집합체를 의미. 더보기 * 노드 : 서버, 라우터, 스위치 등 네트워크 장치를 의미. * 링크 : 유선 또는 무선을 의미. 1. 처리량과 지연 시간 네트워크 구축시 중요한 것은 '좋은' 네트워크로 만드는 것이 중요. 좋은 네트워크 처리량 지연 시간 장애 빈도 보안 상태 많음 짧음 적음 좋음 처리량(throughput) 처리량 : 링크를 통해 전달되는 단위 시간당 데이터양을 말함. ㄴ 단위 : bps(bits per second). 초당 전송 또는 수신되는 비트의 수를 의미. ㄴ 처리량에 영향을 주는 요소 : 트래픽..
네트워크 기기 : 네트워크 구축의 기반이 되는 기기 1. 네트워크 기기의 처리 범위 - 네트워크 기기는 계층별로 처리 범위를 나눌 수 있음. - 상위(애플리케이션쪽에 가까운) 계층을 처리하는 기기는 하위 계층 처리 가능.(반대는 불가능) 각 계층별 네트워크 기기 : • 애플리케이션 계층: L7 스위치 • 인터넷 계층: 라우터, L3 스위치 • 데이터 링크 계층: 브리지, L2 스위치 • 물리 계층: NIC, 리피터, AP 2. 애플리케이션 계층을 처리하는 기기 L7 스위치 - 로드밸런서라고도 하며, 서버의 부하는 분산하는 기기. - 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할. - 시스템이 처리할 수 있는 트래픽 증가가 설치 목표. - URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 ..
OSI 7계층 모델이란? 1계층 - 물리계층(Physical Layer) : 통신 케이블, 리피터, 허브 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다. 2계층 - 데이터 링크계층(DataLink Layer) : 스위치 브릿지나 스위치를 통해 맥주소를 가지고 물리계층에서 받은 정보를 전달 프레임(데이터 통신단위)에 주소부여(MAC - 물리적주소) 에러검출/재전송/흐름제어 3계층 - 네트워크 계층(Network Layer) : 주소부여(IP), 경로설정(Route) 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅) 신뢰성(에러제어) 및 흐름제어 기능이 전혀 없음(TCP에 있음) 4계층 - 전송 계층(Transport Layer) : TCP, UDP 패킷 생성(Assem..
싱글톤 패턴(singleton pattern)이란? - 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. ㄴ 하나의 인스턴스를 만들어 놓고, 해당 인스턴스를 다른 여러 모듈들이 공유하며 사용. 더보기 인스턴스 : 객체지향 프로그래밍에서 어떤 클래스에 속하는 각 객체를 의미. -> 붕어빵 틀 = Class / 각각의 붕어빵 = Instance / 붕어빵 = Object 싱글톤 : 붕어빵 틀로 붕어빵을 하나 만들어서, 여럿이서 그 붕어빵을 보고 따라그리는데 사용. - 주로 데이터베이스 연결 모듈에 많이 사용. - 장점 : 인스턴스를 생성 할 때 드는 비용이 줄어듬. (하나의 인스턴스를 만들어 다른 모듈들이 그 인스턴스 사용) - 단점 : 의존성이 높아짐. 1. 자바스크립트의 싱글톤 패턴 - 리터럴 {} ..
디자인 패턴(Design pattern) 이란? - 프로그램을 설계 할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이요해 해결 할 수 있도록 하나의 규약 형태로 만들어 놓은 것. ㄴ 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 해결책으로 재사용 가능.(이미 만들어져서 잘 되는 것을, 다시 처음부터 만들 필요는 없다는 것) - 프로그래밍을 할 때 쓰는 React.js, Vue.js, Spring 등 라이브러리나 프레임워크의 기본이라고 할 수 있음. 더보기 라이브러리, 프레임워크 : 공통으로 사용 될 수 있는 특정한 '기능'을 모듈화 한 것. 라이브러리: 폴더명, 파일명 등에 대한 규칙이 없고, 프레임워크에 비해 자유로움 프레임워크: 폴더명, 파일명 등에 대한..
1. 컴파일러(Compiler) - 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는, 일종의 번역 프로그램. - 비주얼, 터보, 볼랜드 등 언어에 따라 다양한 컴파일러 종류가 존재한다. - 보통 high-level 프로그래밍 언어를 실행 프로그램으로 만들기 위한 lower level언어(ex 어셈블리 언어, object 코드, 등)로 바꾸는 데에 사용 - 원래의 문서를 '소스 코드' 혹은 원시 코드라고 부름 - 출력된 문서를 '목적 코드'라고 부름 1) 컴파일러 실행 단계 (1) 구문 분석 : 소스 코드 파일을 읽어 추상 구문 트리 생성, 문법에 맞지 않는 소스 코드는 사용자에게 알림 (2) 최적화 : 추상 구문 트리 분석 및 최적화. (3) 코드 생성 : 목적 ..