IT 개발자를 희망하지만 기본적인 배경지식이 부족하다고 느껴 정리해야할 필요성을 느꼈다!
컨설턴트님의 추천으로 보게 된 게시글에서 필요한 부분을 요약하여 정리하였다.
운영체제(OS)는 프로그램들을 실행하는 메인 프로그램입니다.
운영체제의 종류
개발자들이 작성한 코드들로 컴파일 된 것 = 따라서, 코드(명령어)로 구성되어있다.
프로그램을 실행하게 됐을 때 프로세스
라고 한다.
프로그램은 프로그래밍 언어를 사용해서 만들어진다.
CPU는 0, 1만 읽을 수 있다. = 따라서 코드를 컴파일하는 과정이 필요하다.
컴파일러
가 필요하다. (컴파일러는 운영체제와 같이 중요한 시스템 프로그램 중 하나)고급언어(우리가 사용하는 프로그래밍 언어) vs 저급언어(컴파일러를 통해 변한된 기계어)
컴퓨터와 컴퓨터간의 연결을 의미
네트워크 연결을 위해서는 크게 프로토콜
, IP 주소
, PORT
가 필요하다.
클라이언트(Client) : 네트워크에서 정보를 요구
서버(Server) : 정보를 제공
네트워크 통신이 기본적으로 전세계적으로 가능한 이유는 프로토콜
이라는 규칙이 존재하기 때문
우리가 가장 많이 사용하는 프로토콜 HTTP
- 페이지 주소 입력, 파일 다운로드 등
이 외에도 SSH
, SMTP(메일 송신)
이 있다.
HTTP는 네트워크 통신과정에서 보안에 취약한 단점이 있다.
→ 이를 보완하기 위해 HTTPS
가 등장 - HTTP에 보안(Secure)을 강화한 프로토콜
따라서 대부분의 웹 사이트에서는 HTTP 프로토콜을 막고 HTTPS 프로토콜을 사용하는 것을 권장
네트워크 통신을 위한 주소(주의 : 컴퓨터의 고유 주소가 아니다!)
연결하게 되는 네트워크(WiFi, LAN 등)를 기준으로 IP주소를 부여받는다.
컴퓨터 내에 프로세스가지고 있는 주소
cf) IP 주소는 컴퓨터끼리 연결을 위한 네트워크 주소
보통 네트워크 주소에 IP주소만 있으면 뒤에는 프로토콜
의 기본 포트가 적용된다.
80
443
도메인 네임(Domain Name)은 사람이 쉽게 인식할 수 있는 네트워크용 영문 주소
브라우저에 입력하는 영문주소는 전부 (도메인) 네임 서버에 등록된 주소다. 따라서 도메인 네임을 이용하게되면 네임 서버를 거쳐서 IP를 반환 받는 작업이 필요하다.
프로그램의 특정 기능을 수행하도록 미리 짜여진 코드 뭉치(미리 작업하여 개발된 것들)
코드의 큰 뼈대(Frame)을 제공해줘서 그 뼈대에서 개발을 할 수 있도록 도와주는 것
라이브러리와 마찬가지로 개발자가 미리 만들어 놓은 코드이다.
ex) 웹을 개발할 때 보통 React, Angular, Vue 같은 프레임워크를 사용
ex) 서버 개발을 할 때는 JS(node.js)를 사용하면 express | Python을 사용하면 Django, Flask를 사용
※ 프레임워크 사용이 필수는 아니지만 아키텍쳐와 틀을 직접 개발하려면 시간과 비용이 많이 소비된다.
프로그램과 프로그램을 연결시켜주는 매개체(프로그램들끼리 통신)
프로그램끼리 통신을 하기 위해선 프로그램을 만드는 개발자가 해당 프로그램이 잘 통신할 수 있도록 규칙들을 잘 설계하는게 중요하다.
위와 같은 경우 API
라는 것이 프로그램과 프로그램 사이의 중개자 역할을 해준다.
API(Application Programming Intergace)
는 쉽게 규칙들의 집합을 의미한다.
API가 대신해주는 프로그램의 기능들을 미리 정리해서 규칙을 잘 세워두면 클라이언트는 접근할 프로그램을 모르더라도 API에 따라 손쉽게 통신을 할 수 있다.
API 개발 = 중개 프로그램을 대신해주는 것
따라서, 프로그램을 충분히 잘 이해하며 잘 규격화해야 한다.
API를 통해 클라이언트 프로그램은 접근해야 하는 프로그램에 직접 접근하지 않고 편하게 정보를 요청할 수 있다.
이 때 API 서버
는 API를 제공하는 서버를 뜻한다.
API의 사용 사례