2022 백엔드 개발자 로드맵으로 메타인지하기

Yongjun Park·2022년 3월 31일
15

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
    • Redis
    • Memcached
  • 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. 검색 엔진

  • Elasticsearch
  • Solr

4. 메시지 브로커

  • RabbitMQ
  • Kafka

5. 컨테이너 VS 가상화

  • Docker ✅

6. GraphQL

  • Apollo
  • Relay Modern

7. 그래프 DB

  • Neo4j

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
    • Metrics logging

부족한 부분

FE

  1. 클론코딩을 직접 해보면서, CSS와 JavaScript 프론트엔드 더 숙달시키기

군대에 있는 상황에서 그나마 해볼 수 있는 것이 서버의 역할이 크게 필요 없는 정도의 프론트엔드 개발이라고 생각한다.

현재 상황에서 프론트엔드를 지망하는 것은 아니기에 이것 이상으로 할 필요는 아직 없다.

  1. 브라우저의 작동 원리

BE

  1. Java Express 익히기
    • 어떻게 익힐건지 방안 필요
  2. DB 사용하는 BE 연습해보면 좋은데...

CS

  1. CS:APP, 네트워크 하향식 접근, 공룡책 등 전공책 3권은 두고두고 익혀야할 지식이기 때문에 흥미로운 내용은 포스팅해야 함.
  2. 아니면 위 3권의 책의 연습문제 풀이를 포스팅하는 건 어떨까? (CS:APP는 Lab 과제 위주)

Job

  • JD 충분히 보면서 필요 스택 익히기
  • T자형 인재가 되려면 반드시 선택과 집중은 있어야 함. 언제까지나 풀스택 다 한번씩 맛만 볼 수는 없는 일.
  • App, FE 개발보다 BE가 나에게 더 맞을까?
  • 데이터 엔지니어를 지망한다면 분야가 상당히 다르고, 백엔드 공부와 데이터 파이프라인 공부를 함께 해야 하는데...
    • 통계학을 이용할 것인지에 대한 충분한 고민 필요

정리

  • FE : 클론코딩을 직접 해보면서, CSS와 JavaScript 프론트엔드 더 숙달시키기
  • BE : DB를 사용하는 Java Express 샘플 많이 만들어보면서 익히기
  • CS : CS:APP, 네트워크 하향식 접근, 공룡책 등 전공책 3권의 연습문제 풀이 포스팅하기, 흥미로운 부분 포스팅하기
  • Job : 현직자 많이 찾아보면서 반드시 진로 분야 좁히기, 구체화하기
profile
추상화되었던 기술을 밑단까지 이해했을 때의 쾌감을 잊지 못합니다

2개의 댓글

comment-user-thumbnail
2022년 10월 6일

안녕하세요! 작성해주신 로드맵 요약 잘 보았습니다! 해석 및 요약해주신 내용들을 제가 개인적으로 공부하는 노션 및 블로그에서 활용 가능한지 문의드립니다! 출처는 표시하도록 할게요 :)

1개의 답글