백엔드 로드맵

Jinsu Kim·2022년 9월 18일
0

백엔드

목록 보기
2/5

1. 인터넷

인터넷은 어떻게 작동될까요?
HTTP란?
브라우저와 동작 원리
DNS와 동작 원리
도메인 네임이란?
호스팅이란?

2. 기본적인 프론트엔드 지식(기본적인 프론트 지식 Okay)

HTML
CSS
JavaScript
현재 Java 기초 책 읽는중
VueJs 공부 중

3. OS 및 일반적인 지식

터미널 사용방법(▲)
OS의 일반적인 작동 방식
프로세스 관리
스레드와 동시성
기본적인 터미널 명령어
grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill
메모리 관리
프로세스간 통신 (IPC)
POSIX 기초
stdin, stdout, stderr, pipes
기본적인 네트워크 개념

4. 언어배우기(Okay)

Java(Okay)
C# (배워보고 싶다)
PHP
JavaScript(Okay)
Python(Okay)
Ruby(Okay)

5. 버전관리(Version Control System) -

버전 관리란? 사용이유?
많은 코드 파일들을 관리하기 위해서!
저장소 호스팅 서비스 - 계정 생성 및 깃허브 (Github) 사용 방법 배우기
1) Gihub(Okay)

2) Gitlab

3) Bitbucket

6.관계형 데이터베이스

1) PostgreSQL(okay)

2) MySQL(Okay)

3) MariaDB

4) MS SQL

5) Oracle

7. 데이터베이스 상세정보

ORM
ACID(원자성, 일관성, 고립성, 지속성)
트랜잭션
N+1 문제
데이터베이스 정규화
인덱스와 작동 방식
데이터 레플리케이션
샤딩 전략
CAP 이론
7.1. NoSQL 데이터베이스
1) MongoDB

2) RethinkDB

3) CouchDB

4) DynamoDB

8. API에 대해서 배우기

1) HATEOAS

2) 오픈 API 스펙과 Swagger

3) 인증

    (1) Cookie 기반

    (2) OAuth(다른 서비스의 회원 정보를 안전하게 사용하기 위한 방법)

    (3) 기본적인 인증

    (4) 토큰 인증

    (5) JWT

    (6) OpenID

    (7) SAML

4) REST - Roy Fieiding의 Poper 읽기

5) JSON SPIs

6) SOAP

9. 캐싱

1) CDN(Contents Delivery Network)

2) 서버 사이드

  (1) Redis

  (2) Memcached

3) 클라이언트 사이드

10.웹 보안 지식

1) 

    (1) MD5와 사용하지 않는 이유

    (2) SHA Family

    (3) scrypt - 해시 알고리즘

    (4) bcrypt - 해시 알고리즘

2) 

    (1) HTTPS

    (2) 컨텐츠 보안 정책

    (3) CORS

    (4) SSL/TLS

    (5) OWASP 보안정책

11. 테스팅

1) 통합 테스트

2) 단위 테스트

3) 기능 테스트

통합테스트는 모듈을 통합(Integrate)하는 단계에서 수행하는 테스트이다.
단위 테스트를 우선 수행하여 모듈들이 각각 정상적으로 작동이 되는 것을 확인했다면 이제 이 모듈들을 연동하여 테스트를 수행하게 되는데 이것이 통합 테스트이다.

12. CI / CD

13. 개발과 설계 원칙

1) GOF 디자인 패턴

2) 도메인 주도 설계

3) 테스트 주도 개발

4) SOLID(객체 지향 개발 5대 원리)

SRP(단일책임의 원칙: Single Responsibility Principle)
OCP(개방폐쇄의 원칙: Open Close Principle)
LSP(리스코브 치환의 원칙: The Liskov Substitution Principle)
ISP(인터페이스 분리의 원칙: Interface Segregation Principle)
DIP(의존성역전의 원칙: Dependency Inversion Principle)
5) KISS( Keep It Simple Stupid!) 심플하게 심플하게!

6) YAGNI(You aren't gonna need it) 개발자가 필요하다고 간주할 때 까지 기능을 추가하지 않는 것

7) DRY(Don't repeat yourself)

13.1 아키텍처 패턴

1) 모놀로틱 앱

2) 마이크로서비스

3) SOA

4) CQRS와 이벤트 소싱

5) Serverless

14. 검색엔진

1) Elasticsearch

2) Solr

15. 메세지 브로커

1) RabbitMQ

2) Kafka

16. 컨테이너화 vs 가상화

1) Docker

2) rkt

3) LXC

17. GraphQL

1) Apollo

2) Relay Modern

18. 그래프 데이터베이스

1) Neo4j

19. 웹소켓

20. 웹서버

1) Niginx

2) Apache

3) Caddy

4) MS IIS

21. 확장성 - 프로덕트 지속 가능성에 대해 배우며 관심을 기울여야 하는 일반적인 주제

1) 마이그레이션 전략

    (1) Graceful

    (2) Degradation

    (3) Throtting

    (4) Backpressure

    (5) Loadshifting

    (6) Circuit Breaker

2) 차이점 이해 
    (1) 측정

    (2) 모니터링

    (3) 원격 측정

3) 수평선 확장 vs 수직적 확장

4) 관찰 가능성을 고려한 확장

    - 문제가 발생시 문제를 디버깅하고 해결하는데 도움이 되는 측정 로그와 기타 관찰 가능한 항목
profile
Ruby와 js로 첫 커리어를 시작하였고 3년차 엔진니어입니다! vim에 관심이 많습니다!

0개의 댓글