RoadMap
인터넷
- 인터넷이 작동하는 원리
- HTTP란 무엇인가?
- 브라우저의 작동 원리
- DNS와 작동원리
- Domain Name이란?
- Hosting 이란?
기초적인 Front-End 지식
- 프론트 엔드는 어떤 직종인가
- HTML/CSS/JS의 정의와 차이점
- 생활 코딩 강의
OS와 일반적인 지식
- 터미널 사용방법
- 기초 터미널 명령어
- OS들의 일반적인 작동 방식
- 프로세스 관리 (Process Management)
- 쓰레드와 동시성 (Concurrency)
- 메모리 관리
- 프로세스간의 통신 (Interprocess Communication)
- 입출력(I/O) 관리
- POSIX 기초
- stdin, stdout, stdrr, pipes
- 네트워크 기초 개념
언어 배우기
- 🔥 Javascript
- 💧 Python
- 💧 Ruby
- 💧 Java
- 💧 C#
- 💧 PHP
VCS (Version Control Systems, 버전 관리 시스템)
VCS가 무엇이고 왜 사용해야 하는가
- Git 기초 사용법
저장소 호스팅 서비스 (Repo hosting services)
계정을 직접 만들고 GitHub의 사용법을 배워보자.
- GitHub
- GitLab
- Bitbucket
관계형 데이터베이스 (SQL)
- PostgreSQL
- MySQL
- MariaDB
- MS SQL
- Oracle
비관계형 데이터베이스 (NoSQL)
- Document 형
- MongoDB
- MongoDB
- CouchDB
- Columns DBs
- Cassandra
- Time Series
- InfluxDB
- TimescaleDB
- Realtime
- Firebase
Firebase
Firebase 기초 - RethinkDB
- Firebase
데이터베이스 스타일
- 🔥 ORMs
ORM 이란? - 🔥 ACID (트랜잭션이 가져야 하는 4가지 속성)
- 🔥 트랜잭션
DB 트랜잭션: 글의 중간 트랜잭션 특징 부분이 윗 항목인 ACID에 대한 내용입니다. - 🔥 N+1 문제
N + 1 문제 - 🔥 DB 정규화
정규화(Normalization) 쉽게 이해하기 - 🔥 인덱스와 작동 방식
Index - 🌪 리플리케이션
Database의 리플리케이션(Replication)이란? - 🌪 샤딩 전략
Database의 샤딩(Sharding)이란? - 🌪 CAP 이론
어떤 DB를 사용해야 할까? CAP 이론
API
- 🔥 REST
REST API 제대로 알고 사용하기
REST API- Roy Fielding의 논문 읽기
REST - Roy Fielding dissertation 번역 요약
- Roy Fielding의 논문 읽기
- 🔥 JSON APIs
JSON이란 무엇일까??
JSON으로 작업하기 - 🔥 gRPC
gRPC란? - 🌪 SOAP
- 🌪 HATEOAS
- 🌪 Open API 스펙과 Swagger
- 🔥 인증
- 🔥 OAuth
OAuth란 무엇일까
OAuth와 춤을 - 🔥 기본적인 인증
- 🔥 Token 인증
토큰 기반 인증 vs 서버(세션) 기반 인증 - 🔥 JWT (Json Web Token)
[JWT] JSON Web Token 소개 및 구조 - 🌪 Cookie 기반
- 🌪 OpenID
- 🌪 SAML
- 🔥 OAuth
캐싱
- 🔥 CDN
[클라우드 이해] CDN이란?
CDNs(Content delivery networks)에 대해 알아보자 - 서버 사이드
- 🔥 Redis
Redis 기본 정리: Redis 뿐 아니라 캐싱의 도입에 대하여 설명이 잘 되어 있습니다 - 💧 Memcached
- 🔥 Redis
- 🔥 클라이언트 사이드
웹 보안 지식
- 🔥 해싱 알고리즘
해시 알고리즘
MD5와 SHA의 차이
안전한 패스워드 보안(bcrypt, scrypt, pdkdf2)- MD5가 무엇이며, 왜 사용하지 않는가?
- SHA 알고리즘
- scrypt / bcrypt
- 🔥 기타 보안
SOP, CORS, CSP 개념과 우회방법- HTTPS
HTTP와 HTTPS 및 차이점 - 컨텐츠 보안 정책
- CORS
- SSL / TLS
- OWASP 보안 정책
- HTTPS
테스팅
유닛 테스트(Unit Test), 통합 테스트(Integration Test), 기능 테스트(Funcional Test)란?
- 🔥 통합 테스트 (Integration Testing)
- 🔥 유닛 테스트 (Unit Testing, 단위 테스팅)
- 🔥 기능 테스트 (Functional Testing)
🔥 CI / CD
지속적 통합 / 지속적 제공에 대해서 배우기
CI/CD란 무엇인가 (Feat. DevOps 엔지니어)
설계와 개발 원칙
- 🔥 SOLID
SOLID 원칙 - 🔥 KISS
- 🔥 YAGNI
- 🔥 DRY
소프트웨어 개발의 3개의 KEY 원칙: KISS, YAGNI, DRY - 🌪 GOF 디자인 패턴
GoF 디자인 패턴 - 🌪 DDD (Domain Driven Design, 도메인 주도 설계)
- 🌪 TDD (Test Driven Development, 테스트 주도 설계)
TDD DDD BDD 기본
아키텍쳐 패턴
- 🔥 모놀리식 애플리케이션 (Monolithic Apps)
- 🔥 마이크로서비스 (Microservices)
모놀리식 / 마이크로서비스
알아두면 깜놀! 넷플릭스 백엔드의 진실!?: 모놀리식과 마이크로서비스에 대해서 다룬 유튜브 영상입니다. - 🔥 SOA
SOA 패턴이란 - 🌪 CQRS와 이벤트 소싱
- 🔥 서버리스 (Serverless)
서버리스 아키텍쳐란? - 서비리스는 서버가 없는걸까? 8분 개념 설명!
검색 엔진
- 🔥 Elasticsearch
Elasticsearch란? (개념 및 종류, RDBMS와 차이)
[Elasticsearch] 기본 개념잡기 - 💧 Solr
🌪 메시지 브로커
Kafka(이벤트 브로커) vs RabbitMQ(메세지 브로커)
- 🔥🌪 RabbitMQ
- 💧 Kafka
컨테이너화 vs 가상화
Docker는 무엇인가? 도커의 기초와 이미지 설치하고 사용
- 🔥 Docker
- ☁️ rkt
- ☁️ LXC
🌪 GraphQL
- 🔥🌪 Apollo
Apollo Client는 Redux와 무엇이 다른가 - 💧 Relay Modern
🌪 Graph Databases
- 🌪 Neo4j
🌪 웹 소켓
실시간 양방향 통신에 대해서 배우기
🌪 웹 서버
- 🔥🌪 Nginx
- 💧 Apache
- 💧 Caddy
- 💧 MS IIS
🔥 확장성을 고려한 빌딩
제품의 지속 가능성을 위해 배우고, 관심을 가져야 함
- 🔥 마이그레이션 전략
- 단계적 기능 축소 (Graceful Degradation)
- 스로틀링 (Throttling)
- Backpressure
- 서킷 브레이커 (Circuit Breaker)
- 차이점을 이해하기
- Instrumentation vs Monitoring vs Telemetry
- 🔥 수직적 확장 vs 수평적 확장
- 🔥 관찰 가능성을 고려한 확장
- log를 남기고, 상태를 관측 가능한 아이템을 사용하는 방법 등을 통해
문제 발생 시 디버깅을 돕고 이슈를 해결하도록 함
// Thanks to... 룡, 짱
next();
참고자료
'백엔드' 카테고리의 다른 글
[Supabase] What is Supabase (0) | 2022.03.25 |
---|