https://roadmap.sh/backend
이 글을 쓰며 구체화한 목표
- FE : 클론코딩을 직접 해보면서, CSS와 JavaScript 프론트엔드 더 숙달시키기
- BE : DB를 사용하는 Java Express 샘플 많이 만들어보면서 익히기
- CS : CS:APP, 네트워크 하향식 접근, 공룡책 등 전공책 3권의 연습문제 풀이 포스팅하기, 흥미로운 부분 포스팅하기
- Job : 현직자 많이 찾아보면서 반드시 진로 분야 좁히기, 구체화하기
훑어보기
중요도는 보라색 태그 > 초록색 태그 > 회색 태그 순이다.
보라색 태그는 필수, 초록색 태그는 선택사항, 회색 태그는 안해도 괜찮은 것이다.
초반부
1. 인터넷에 대하여
- 인터넷은 어떻게 작동되는 것인가? ✅
- HTTP란 무엇인가? ✅
- 브라우저는 어떻게 작동되는 것인가? ❓
- DNS는 어떻게 작동되는 것인가? ✅
- Domain Name이란 무엇인가? ✅
- Hosting이란 무엇인가? ❓
2. 기본 프론트엔드 언어
- HTML ✅
- CSS ❓
- JavaScript ❓
3. OS와 컴공 기본 지식
- Terminal 사용법 ✅
- OS는 어떻게 돌아가는가? (기초만) ✅
- 프로세스 관리 ❓
- 스레드와 동시성 ✅
- 기본 Terminal 커맨드 ✅
- grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill
- 메모리 관리 ❓
- 프로세스 간 통신 ✅
- I/O 관리 ❓
- POSIX 기본 명령어 ✅
- stdin, stdout, stderr, pipes
- 네트워크 개념 (기초만) ✅
4. 백엔드 언어 하나 배우기
- JavaScript (추천) ❓
- Java ❓
- C# ❌
- PHP ❌
- Python ❓
- Ruby ❌
- Rust ❌
- Go ❌
5. Git과 Github
- 버전 컨트롤이 필요한 이유 ✅
- Git 기본 명령어 ✅
- Github 사용해보기 ✅
중반부
1. 관계형 DB
- PostgreSQL (추천) ❌
- MySQL ✅
- MariaDB ✅
- MS SQL ❌
- Oracle ❓
2. NoSQL
- 문서 : MongoDB ❌, CouchDB ❌
- Column형 DB : Cassandro ❌
- 시계열 : InfluxDB ❓, TimescaleDB ❌
- 실시간 : Firebase ❌, RethinkDB ❌
(여기부터는 뭔지 몰라요... 아직은 해석 못하겠음)
3. DB 이론
- ORMs
- ACID
- Transactions
- N+1 Problem
- Database Normalization
- Indexes and how the work
- Data Replication
- Sharding Strategies
- CAP Theorem
4. API에 대하여
- HATEOAS
- Open API Spec and Swagger
- Authentication
- Cookie Based
- OAuth
- Basic Authentication
- Token Authentication
- JWT
- OpenID
- SAML
- REST
- JSON APIs
- SOAP
- gRPC
5. 캐싱
- CDN
- Server Side
- Client Side
6. 웹 보안
- Hashing Algorithms
- MD5 and why not to use it
- SHA Family
- scrypt
- bcrypt
- HTTPS
- Content Security Policy
- CORS
- SSL/TLS
- OWASP Security Risks
7. 테스트 기법
- Integration Testing
- Unit Testing
- Functional Testing
8. CI/CD
후반부
1. 디자인 패턴
- GOF 디자인 패턴
- Domain Driven Design
- TDD
- 디자인 원칙
- SOLID ✅
- KISS ✅
- YAGNI ✅
- DRY ✅
2. 아키텍처 패턴
- Monolitic Apps
- Microservices
- SOA
- CQRS and Event Sourcing
- Serverless
3. 검색 엔진
4. 메시지 브로커
5. 컨테이너 VS 가상화
6. GraphQL
7. 그래프 DB
8. 웹소켓
9. 웹 서버들
- Nginx
- Apache
- Caddy
- MS IIS
10. 큰 스케일의 프로젝트로 키우기
- Mitigation Strategies
- Graceful Degradation
- Throttling
- Backpressure
- Loadshifting
- Circuit Breaker
- Understand the Diff.
- Instrumentation
- Monitoring
- Telemetry
- Migration Strategies
- Horizontal vs Vertical Scaling
- Building with Observabillity in mind
부족한 부분
FE
- 클론코딩을 직접 해보면서, CSS와 JavaScript 프론트엔드 더 숙달시키기
군대에 있는 상황에서 그나마 해볼 수 있는 것이 서버의 역할이 크게 필요 없는 정도의 프론트엔드 개발이라고 생각한다.
현재 상황에서 프론트엔드를 지망하는 것은 아니기에 이것 이상으로 할 필요는 아직 없다.
- 브라우저의 작동 원리
BE
- Java Express 익히기
- DB 사용하는 BE 연습해보면 좋은데...
CS
- CS:APP, 네트워크 하향식 접근, 공룡책 등 전공책 3권은 두고두고 익혀야할 지식이기 때문에 흥미로운 내용은 포스팅해야 함.
- 아니면 위 3권의 책의 연습문제 풀이를 포스팅하는 건 어떨까? (CS:APP는 Lab 과제 위주)
Job
- JD 충분히 보면서 필요 스택 익히기
- T자형 인재가 되려면 반드시 선택과 집중은 있어야 함. 언제까지나 풀스택 다 한번씩 맛만 볼 수는 없는 일.
- App, FE 개발보다 BE가 나에게 더 맞을까?
- 데이터 엔지니어를 지망한다면 분야가 상당히 다르고, 백엔드 공부와 데이터 파이프라인 공부를 함께 해야 하는데...
- 통계학을 이용할 것인지에 대한 충분한 고민 필요
정리
- FE : 클론코딩을 직접 해보면서, CSS와 JavaScript 프론트엔드 더 숙달시키기
- BE : DB를 사용하는 Java Express 샘플 많이 만들어보면서 익히기
- CS : CS:APP, 네트워크 하향식 접근, 공룡책 등 전공책 3권의 연습문제 풀이 포스팅하기, 흥미로운 부분 포스팅하기
- Job : 현직자 많이 찾아보면서 반드시 진로 분야 좁히기, 구체화하기
안녕하세요! 작성해주신 로드맵 요약 잘 보았습니다! 해석 및 요약해주신 내용들을 제가 개인적으로 공부하는 노션 및 블로그에서 활용 가능한지 문의드립니다! 출처는 표시하도록 할게요 :)