본문 바로가기
프로그래밍/Web

백엔드 로드맵 정리

by Hwan,. 2022. 9. 12.
728x90
반응형

 백엔드 공부를 하다보면 볼 수 있는 로드맵 이미지이다.

각 내용을 정리하고 개인적으로 필요하다고 생각하는 내용들도 조금 추가해 보았다.

백엔드 로드맵

 

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

 

728x90
반응형

댓글