백엔드 공부를 하다보면 볼 수 있는 로드맵 이미지이다.
각 내용을 정리하고 개인적으로 필요하다고 생각하는 내용들도 조금 추가해 보았다.
Internet
How does the internet work?
- 패킷과 프로토콜을 OSI 7을 기반으로 설명
- A PC의 프로그램에서 B PC에 위치한 프로그램으로 패킷이 전달되는 과정
- Private IP와 Public IP
- 라우터와 스위치
- 전송 계층의 전송 장비
- CIDR, 서브네팅, 클래스
What is HTTP?
HTTP가 무엇인지에 대한 설명, 아래 요소들을 설명하면 되는데 조금 더 나가면 브라우저에 대한 내용과 HTTPS와의 차이를 같이 말할 수 있을 듯 하다.
- 브라우저에 대한 이야기 (7계층에 위치한 프로그램의 일종)
- HyperText Transfer Protocol, HTML과 관계
- TCP 기반이지만 HTTP/3부턴 UDP 기반
- GET, POST, PUT, DELETE 등의 메소드
Browsers and how they work?
브라우저가 뭐고 어떻게 작동되는지를 물어본 질문이다.
부라우저의 구조를 설명하면서 작동원리를 말하면 될 것 같다.
- UI/ UI 백엔드
- 네트워킹
- 렌더링 엔진
- 브라우저엔진
- 데이터 저장
- 자바스크립트 인터프리터
** Jinja와 파이썬 인터프리터에 대한 이야기도 하면 좋을 듯
DNS and how it works?
Domain Name Server에 대한 설명, 역할, 알려진 서버 (구글 8.8.8.8) 등
What is Domain Name?
도메인과 아이피에 대한 개념
What is hosting?
도메인 관리, 왜 필요하고 어떻게 하는지 예시를 들어 말하면 좋을 듯 함
(ex. 국내 호스팅 제공 업체에서 도메인 구입 후 이용 중), 레코드에 대한 개념도 추가로 공부하면 좋을 듯
Basic Fronted Knowledge
프론트를 만들기 위한 기본 지식으로 아래 언어들을 공부해야 한다.
- HTML : HyperText Markup Language
- CSS : Cascading Style Sheets
- JavaScript + JavaScript Library (jQuery, react)
Basic Backend Knowledge
백엔드를 만들기 위한 기본 지식으로 아래 언어들을 공부해야 한다.
여러 방법으로 만들 수 있는데 본인이 자신 있는 언어를 기반으로 프레임워크를 다루는 게 좋을 것 같다.
(국내에선 자바 + 스프링 만한게 없다고 생각한다.)
- 자바/jsp + Spring framework
- Python + Django/Flask/FastAPI framework
- Node js + Express
OS and General Knowledge
Basic Terminal Commands, Terminal Usage, POSIX Basics은 직접사용하면서 익히고 나머지 운영체제에 대한 내용들은 공룡책보자..!
- Terminal Usage
- How OSs Work in General : OS 작동 원리
- Process Management : 프로세스 관리
- Threads and Concurrency
- Basic Terminal Commands : Grep, awk, sed, lsof, curl, wget, tail, head, less find, ssh, kill
- Memory Management
- Interprocess Communication
- I/O Managemanet
- POSIX Basics : stdin, stdout, stderr, pipes
- Basic Networking Concepts
Learn a Language
Java, C#, PHP, RUST, GO, JavaScript, Python, Ruby, C++ 등 프로그래밍 언어
Version Control Systems
코드의 형상 관리와 버전 관리를 위해 Git 또는 Subversion(SVN) 을 사용한다.
각 도구의 차이점과 특징, 사용법 등을 알아두면 좋을 것 같다.
- Basic Usage of Git
- Repo hosting services : GitHub, GitLab, Bitbucket
Databases
SQL 쿼리를 사용하는 RDB(관계형 데이터베이스)와 NoSQL DB의 차이를 알고 각 디비를 프로그램에서 연동해보면 좋을 듯 하다. 테이블 설계와 최적화, 샤딩 등을 추가로 해보면 좋다.
- Relational Databases : PostgreSQL, MySQL, MariaDB, MS SQL, Oracle
- NoSQL : MongoDB, RethinkDB, CouchDB, DynamoDB
- More about Databases : ORMs, ACID, Transactions, N+1 Problem, Database Normalization, Indexes and how they work Data Replication, Sharding Strategies, CAP Theorem
Learn about APIs
REST와 GraphQL 차이와 사용법을 다른 글에서 작성 중이다.
Swagger와 JSON, JWT는 기본적으로 알아두어야된다고 생각한다.
- HATEOAS
- Open API Spec and Swagger
- Authentication : twilio, opt, e-mail, JWT
- REST
- Graph QL : Apollo, Relay Modern
- JSON APIs
- SOAP
Caching
CDN과 Redis에 대해서 알아볼 예정이다.
Redis는 In-Memory DB로 알고있는데 Caching으로 분류된게 의문이지만 일단 넣어두었다.
- CDN
- Server Side : Redis, Memcached
- Client Side
Web Security Knowledge
해싱, SSL/TLS, CA인증서 등에 대해서 알아보자. 좀 더 확장하면 RSA, ECC 등의 암호화 알고리즘을 공부해봐도 좋을 것 같다.(SSL 안에서 사용된다.)
- Hashing Algorithms : MD5 and why not to use it, SHA Family, scrypt, bcrypt
- HTTPS, CORS, Content Security Policy, SSL/TLS, OWASP Security Risks
Testing
테스트 기법과 테스트 자동화
- Intergration Testing
- Unit Testing
- Functional Testing
- Test Automation : 라노렉스, Python, Guitar 등
CI/ CD
DevOps와 더 큰 연관이 있다고 생각한다. 시간될 때 공부해두자.
- GitOps : GitLab, ArgoCD
- K8S
- Jenkins
Design Patterns and Development Principles
MVC, DDD, TDD 위주로 공부하자.
- MVC (Model View Control)
- GOF (Gang Of Four)
- DDD (Domain Driven Design)
- TDD (Test Driven Development)
- SOLID
- KISS
- YAGNI
- DRY
Architectural Patterns
아키텍쳐에 대한 내용을 알고 있는 것과 모르는 것의 차이는 크다고 생각한다.
MA, MSA, Serverless 정도만 알면 될 것 같다.
- MA (Monolithic Architecture)
- MSA (Micro Services Architecture)
- Serverless
- SOA
- CQRS and Event Sourcing
Search Engines
로그 등의 빅데이터를 수집하고 검색할 수 있는 엔진 (키바나는 가시화 도구)
- Elasticsearch(+kibana)
- Solr
Message Brokers
- RabbitMQ
- Kafka
Containerization vs Virtualization
컨테이너화와 가상화에 대한 내용인 듯 하다.
Docker를 위주로 공부하자. (사용법, 컨테이너 개념)
- Docker
- rkt
- LXC
Graph Databases
- Neo4j
WebSockets
Web Servers
외부 사용자들의 접근을 위한 웹 서버들이다. config 작성방법과 백엔드(Python일 경우 Gunicon 또는 uwsgi) 연동을 해보면 좋을 것 같다.
- Nginx
- Apache
- Caddy
- MS IIS
Building for Scale
마이그레이션과 수직적, 수평적 확장을 제외하고 잘 모르겠다. 하나씩 알아보자.
- Mitigation Strategies : Graceful, Degrodation, Throttling, Backpressure, LoadShifting, Circuit Breaker
- Understand the Diff : Instrumentation, Monitoring, Telemetry
- Migration Strategies
- Horizontal vs Vertical Scaling
- Building with Observability in mind
'프로그래밍 > Web' 카테고리의 다른 글
FastAPI와 Ajax로 SSH 서버 상태 체크하는 웹 서버 만들기 (0) | 2023.02.19 |
---|---|
[백엔드] Flask에서 JWT 토큰 생성하기 (0) | 2022.09.18 |
[Django] 장고 기본 웹서버 띄우기 (0) | 2022.03.28 |
댓글