728x90
최근 백엔드에 관심이 생겨서 공부해야되는 로드맵을 정리하였습니다.
시간 날때마다 틈틈히 공부하며 정리해보겠습니다. (할 수있겠지..?)
참고 : https://roadmap.sh/backend
Backend Developer Roadmap: What is Backend Development?
Learn what backend development is, what backend developers do and how to become one using our community-driven roadmap.
roadmap.sh
Internet
- 인터넷은 어떻게 동작하나여?
- HTTP가 무엇인가요?
- 브라우저란? & 브라우저는 어떻게 동작하는가?
- DNS는 무엇인가요? 어떻게 동작하나요?
- 도메인 이름은 무엇인가요?
- 호스팅은 무엇인가요?
내가 배워야 하는 언어
- Rust
- Go
- C#
- Python
Relational Databases
- PostgreSQL
- MySQL
- MariaDB
- MS SQL
- Oracle
API
- API란 무엇인가요?
- API는 Application Programing Interface의 약어로, 두 개의 애플리케이션이 서로 통신할 수 있게 해주는 소프트웨어 중개자입니다.
API의 작동
- SOAP API
- RPC API
- Websocket API
- REST API
Authentication
- JWT
- Basic Auth
- Token Auth
- OAuth
- Cookie Based
Caching
- 캐싱(Caching)은 자주 사용하는 데이터나 정보를 일정 기간 동안 로컬 메모리에 저장하는 기술이다.
- 따라서 다음에 클라이언트가 동일한 정보를 요청할 때 데이터베이스에서 정보를 검색하는 대신 로컬 메모리에서 정보를 제공합니다.
- 캐싱의 가장 큰 장점은 처리 부담을 줄여 성능을 향상시킨다는 것입니다.
CDN
- CDN(Content Delivery Network) 서비스는 웹사이트의 고가용성 및 성능 향상을 제공하는 것을 목표로 합니다.
- 이는 일반적으로 클라이언트 요청에 지리적으로 더 가까운 엔드포인트를 통해 웹사이트 자산과 콘텐츠를 빠르게 전달함으로써 달성됩니다.
- 기존 상용 CDN(Amazon CloudFront, Akamai, CloudFlare 및 Fastly)은 이러한 목적으로 사용할 수 있는 서버를 전 세계에 제공합니다.
- CDN을 통해 자산과 콘텐츠를 제공하면 웹 사이트 호스팅의 대역폭이 줄어들고 추가 캐싱 계층이 제공되어 잠재적인 중단을 줄이고 웹 사이트 보안도 향상할 수 있습니다.
Client Side
- 클라이언트 측 캐싱은 향후 재사용을 위해 네트워크 데이터를 로컬 캐시에 저장하는 것입니다.
- 애플리케이션은 네트워크 데이터를 가져온 후 해당 리소스를 로컬 캐시에 저장합니다.
- 리소스가 캐시되면 브라우저는 해당 리소스에 대한 향후 요청 시 캐시를 사용하여 성능을 향상합니다.
Server Side
- 서버 측 캐싱은 나중에 재사용할 수 있도록 웹 파일과 데이터를 원본 서버에 임시로 저장합니다.
- 사용자가 웹페이지를 처음 요청하면 웹사이트는 서버로부터 데이터를 검색하는 일반적인 과정을 거쳐 웹사이트의 웹페이
- 지를 생성하거나 구성합니다.
- 요청이 발생하고 응답이 다시 전송된 후 서버는 웹페이지를 복사하여 캐시로 저장합니다.
- 다음에 사용자가 웹사이트를 다시 방문하면 이미 저장되었거나 캐시된 웹페이지 사본이 로드되므로 속도가 더 빨라집니다.
Redis
- Redis는 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이선스), 메모리 내 데이터 구조 저장소입니다.
- Redis는 문자열, 해시, 목록, 집합, 범위 쿼리가 포함된 정렬된 집합, 비트맵, 하이퍼로그 로그, 지리공간 인덱스 및 스트림과 같은 데이터 구조를 제공합니다.
- Redis에는 복제, Lua 스크립팅, LRU 제거, 트랜잭션 및 다양한 수준의 온디스크 지속성이 내장되어 있으
- 며 Redis Sentinel 및 Redis 클러스터를 통한 자동 파티셔닝을 통해 고가용성을 제공합니다.
Memcached
- Memcached(mem-cash-dee 또는 mem-cashed로 다양하게 발음)는 범용 분산 메모리 캐싱 시스템입니다.
- 외부 데이터 소스(예: 데이터베이스 또는 API)를 읽어야 하는 횟수를 줄이기 위해 RAM에 데이터와 개체를 캐싱하여 동적 데이터베이스 기반 웹 사이트의 속도를 높이는 데 자주 사용됩니다.
- Memcached는 개정된 BSD 라이센스에 따라 라이센스가 부여된 무료 오픈 소스 소프트웨어입니다.
- Memcached는 Unix 계열 운영 체제(Linux 및 macOS)와 Microsoft Windows에서 실행됩니다.
- libevent 라이브러리에 따라 다릅니다.
- Memcached의 API는 여러 시스템에 분산된 매우 큰 해시 테이블을 제공합니다.
- 테이블이 가득 차면 후속 삽입으로 인해 가장 최근에 사용된 것(LRU) 순서로 오래된 데이터가 제거됩니다.
- Memcached를 사용하는 애플리케이션은 일반적으로 데이터베이스와 같은 느린 백업 저장소로 대체하기 전에 RAM에 요청과 추가를 계층화합니다.
- Memcached에는 발생할 수 있는 누락을 추적하는 내부 메커니즘이 없습니다. 그러나 일부 타사 유틸리티는 이 기능을 제공합니다.
Web Security Knowledge
- Hashing Algorithms
- MD5 ( 현재 사용 X 권장 )
- SHA Family
- scrpyt
- bcrypt
- HTTPS
- OWASP Risks
- CORS
- SSL/TLS
- CSP
- Server Security
Testing
- Integration Testing
- Unit Testing
- Functional Testing
CI / CD
Scaling Databases
- Database Indexes
More about Databases
- ORMs
- ACID
- Transactions
- N+1 Problem
- Normalization
- Failure Modes
- Profiling Performance
Software Design & Architecture & Design and Development Principles
- GOF Design Patterns
- Domain Driven Design
- Test Driven Development
- CQRS
- Event Sourcing
Architectural Patterns
- Monolithic Apps
- Microservices
- SOA
- Serverless
- Service Mesh
- Twelve Factor Apps
Message Brokers
- RabbitMQ
- Kafka
Containerization vs Virtualization
- LXC
- Docker
- Kubernetes
Search Engines
- Elasticsearch
- Solr
Web Servers
- Nginx
- Apache
- Caddy
- MS IIS
Real-Time Data
- Server Sent EVents
- WebSockets
- Long Polling
- Short Polling
GraphQL
- Apollo
- Relay Modern
NoSQL Databases
- Document DBs
- MonogoDB
- Time Series
- InfluxDB
- Realtime
- Firebase
- Column DBs
- Cassandra
- Key-Value
- Redis
- Graph DBs
Building for Scale
728x90