22년 백엔드 로드맵과 그에 따른 간략한 이해를 정리하고자 글을 쓴다
로드맵
22년 로드맵이고 노란색 박스를 기준으로 진행하려 한다
1. 인터넷
- 네트워크 모음(대부분 TCP)
- 컴퓨터간 정보 교환 할 수 있게 하는 통신 인프라
TCP
- 전송 제어 프로토콜
- IP 패킷 데이터 스트림으로 결합해 양방향 교환
패킷
: 정보 덩어리
데이터 스트림
: 패킷의 묶음
종류
- HTTP
- Web에 사용되며 Web은 인터넷의 특수한 경우라 생각하면 된다
- 이 때
브라우저 <=> 서버
구조로 데이터가 오고 가며 브라우저는 서버에 요청을 하고 받은 데이터를 HTML로 표시해주는 역할
- P2P
- Telnet
- SSH
IP
- 인터넷 데이터 교환에서 최소한의 프로토콜
- 네트워크 공통어라 생각하면 된다
DN
DNS
- ip <=> DN 변환해주는 대규모 분산 DB
구성
- Domain Name Space
- Name Server : 권한 있는 DNS 서버
- Resolver : 권한 없는 DNS 서버
방식
- 웹 브라우저 --(요청)--> 해결사 서버 --(요청)--> Name Server
- Name Server에서 가비아 서버로 요청하라고 응답
- 해결사 서버 --(요청)--> 가비아 서버
- 해결사 서버 --(응답)--> 웹 브라우저
호스팅
- 서버 임대 서비스
- 임대 업체가 미리 구상해 놓은 서비스 임대해 사용하는 것을 의미
2. 프론트엔드 기본 지식
HTML
- Hyper Text Markup Language
- Hyper Text : 텍스트 초월, 링크(단순히 텍스트로서의 역할 이상)
- Markup Language : 프로그램 언어로 정보를 구체적으로 표현 가능
- 태그들로 구성
태그
: 가장 중요하고 기본이 되는 규칙으로 내부에 속성 포함 가능
속성
: 이름 + 값으로 이루어져 있고 태그에 추가적인 정보 더하거나 태그의 동작이나 표현 제어
CSS
- Cascading Style Sheets
- HTML을 포함한 마크 다운 언어 꾸며주는 표현용 언어
- HTML이 문서의 정보, 구조를 설계한다면 CSS는 문서를 보기 좋게 디자인하는 역할
- HTML과 독립적이지만 HTML이 없으면 존재의미 없음
- 전세계 수 많은 페이지가 모두 HTML로 이루어져 있고 그 중 자주 사용되는 태그는 10여개 밖에 않된다
- 결국 홈페이지의 차이점을 만드는 언어는 CSS
JS
- JavaScript
- 웹 페이지 동적인 효과
- 객체 기반의 스크립트 언어
스크립트 언어
: 기존에 이미 존재하는 소프트웨어를 제어하기 위한 용도
- 동적이며 타입 명시 필요 없는 인터프리터 언어
- 객체 지향형 프로그래밍과 함수형 프로그래밍 모두 표현 가능
- 모든 브라우저의 포함되어 있어 소프트웨어 별도 다운 필요 X
- 광범위한 언어군
- Node.js 프레임워크 이용하면 서버 측 프로그래밍도 가능
- Java와 마찬가지로 C문법 기반으로 만듬
ref
3. OS에 대한 전반적인 지식
OS
- Operating System
- 사용자가 컴퓨터를 편리하고 효과적으로 다룰 수 있는 환경 제공
- 효과적인 사용 위해선 HW detail, HW access code 알아야되는데 OS에서 대신해줌
- 컴퓨터 자원 관리, 사용자 <=> 하드웨어 사이의 인터페이스
- 여러 프로그램들을 실행 가능하게 해준다(스케줄링)
- 다양한 API 제공
- 이는 App이 HW detail 알지 못해도 가동 가능하게끔 해준다
- OS가 App이 HW를 사용하는데 있어 호환 가능하게끔 해준다 보면된다
- Program은 실행하면 Program이 memory에 load되고 cpu에 의해 실행된다
- memory에 load되고 cpu에 의해 실행, 이를 process라 칭한다(=program이 hw resource에 할당되는 것)
- program 실행할 때마다 생성
- 컴퓨터 내부에 1개의 program, 다수의 process 존재
구성
- kernel과 other component로 구성
kernel
- HW resource
- cpu
- Disk(Data 영구 저장) : program 저장소
- input, output
- memory(Data 영구 X)
- manages
- synchronization & communication
- allocates
- schedules
other component
- file system
- network protocol
- lib 등
역할
콘솔
- 서버의 로컬 장치에서 직접 명령어를 작성할 수 있는 입, 출력 장치
터미널
- 단말기라고도 부름
- 데이터를 입력하거나 표시하는 기능
- GUI 시스템 위에서 동작하는 CIL
- 서버의 로컬 또는 원격으로 접속할 수 있는 콘솔을 구현한 소프트웨어
Shell
- 실제 명령어를 전달하고 결과를 받는 프로그램
- CLI 명령어 처리하고 결과 출력
- 해석기라고 보면 된다
- SSH(Secure SHell)도 shell 종류 중에 하나
- linux, unix의 명령어 처리 프로그램도 shell이라 부르기도 함
종류
- GUI(Graphical User Interface) : 마우스 등을 이용해 컴퓨터 조작, 그래픽 쉘이라고도 부르며 현재 주로 사용
- CLI(Command Line Interface) : 터미널에서 텍스트를 이용해 조작, 명령줄 쉘이라 부르며 GUI 이전에 많이 사용, Unix 종류는 아직도 사용, 사용 위해서는 터미널 필요
결과적으로 터미널은 사용자가 입력하고 컴퓨터가 출력하는 내용을 볼 수 있는 인터페이스이며 쉘은 사용자가 입력한 명령어를 컴퓨터의 언어로 번역해 컴퓨터에게 전달해주고 컴퓨터의 응답을 받아오는 소프트웨어를 의미
ref 1