프로그래머가 되는 길

[로드맵] 백엔드 개발자(2022년 버전)

보리시스템 2022. 10. 9.

단순 코더가 아닌 CS와 전체 구조의 이해를 기반으로 한 백엔드 개발자가 되려면 공부해야 할 것이 많다. 특히나 비전공자 입장에서는 무엇을 어떻게 공부해야 할지 막막하다. 이를 위해 참고할 2가지를 소개하려고 한다.

 


 

생활코딩에서 들은 인상깊은 이야기가 있다.

컴퓨터를 만든 인물 중 '폰 노이만'이라는 수학 천재가 있는데, 누군가가 "어떻게 수학을 잘 하세요?"라고 물었다고 한다. 폰 노이만은 이렇게 답했다고 한다. "수학은 이해하는 게 아니라 익숙해지는 거라네."

 

개발 공부의 최종 목표는 이해가 아닌 익숙해지는 것!

익숙해지기 위한 수많은 방법들 중 하나가 이해인 것이다.

 

 

1. 서울대학교 컴퓨터공학과 커리큘럼

(출처 : https://cse.snu.ac.kr/undergraduate/course-dependency-graph)

 

2. roadmap.sh 오픈소스 

(출처 : https://roadmap.sh/backend)

 

Developer Roadmaps

Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don't know, find out the knowledge gaps, learn and improve.

roadmap.sh

 

오픈소스의 개발문화처럼 그 로드맵 또한 오픈소스로 정리하고 배포하는 대표적인 프로젝트 'roadmap.sh'가 있다. 웹 개발자가 되기 위해 선택하고 거쳐야 할 기술과 그 순서를 마인드맵 형식으로 보기 편하게 안내하고 있다.

 

깃허브에서 6번째로 가장 많은 별을 받고 방문하고 있는 프로젝트라고 하니 전세계의 많은 개발자들이 참고하는 로드맵이라고 할 수 있겠다. 각 분야/기술별 개발자 로드맵 또한 제공하고 있어 세부적으로 확인해보면 좋겠다.

 

*제공 로드맵 : Frontend, Backend, DevOps, React, Angular, JavaScript, Android, Node.js, Python, Go, Java, Design System, DBA, Blockchain, QA, Software Architect, Software Design and Architecture 등

 


[백엔드 개발자 로드맵]

*표시설명 : ★ 학습권장, 권장대체, 추후학습

 

 

인터넷 ▶ 프론트엔드 ▶ 운영체제 ▶ 언어 ▶ VCS/호스팅 ▶ 데이터베이스 ▶ API ▶ 캐싱 ▶ 웹 보안 ▶ 테스팅 ▶ CI/CD ▶ 설계와 개발 원칙 ▶ 아키텍쳐 패턴 ▶ 검색 엔진 ▶ 메시지 브로커 ▶ 컨테이너화 vs 가상화 ▶ GraphQL ▶ Graph Databases ▶ 웹 소켓 ▶ 웹 서버 ▶ 확장성을 고려한 빌딩

 

 

1. 인터넷 - 개념과 작동원리 <6가지>

- Internet / HTTP / Browser / DNS / DomainName / Hosting

 

2. 프론트엔드 - 기본지식 <3가지>

- HTML / CSS / JavaScript

 

3. 운영체제 일반지식 <10가지>

- [개념] OS 작동방식 / 쓰레드와 동시성

- [명령어] Terminal 사용법 / 기초 명령어

*grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill

- [기능] 프로세스 / 메모리 / I/O 관리

- [추가] POSIX* / IPC / 네트워크

*stdin, stdout, stderr, pipes

 

4. 언어 - 언어마다의 특이점 / 런타임 핵심 세항(동시성, 메모리모델 등) <8개언어 중 선택>

- Java / C# / PHP / JavaScript / Python / Ruby / Rust / Go

 

5. VCS/호스팅 - 사용법 <2가지 + 2가지>

- [VCS(Version Control Systems)] Git

- [저장소 호스팅 서비스(Repo hosting services)] GitHub() / GitLab() / Bitbucket()

 

6. 데이터베이스 - SQL / NoSQL / 세항 <대분류 3가지 / 중분류 5, 7, 7가지>

1) 관계형 데이터베이스(SQL)

- PostgreSQL

- MySQL / MariaDB / MS SQL / Oracle

 

2) 비관계형 데이터베이스 (NoSQL)

- Document (MongoDB / CouchDB)

- Column DBs (Cassandra)

- Time Series (InfluxDB / TimescaleDB)

- Realtime (Firebase / RethinkDB)

 

3) 세항

- ORMs / ACID / 트랜잭션 / N+1 문제 / 정규화 / 인덱스

- 리플리케이션 / 샤딩 전략 / CAP 이론

 

7. API < 7가지, 추후학습 8가지>

- REST / JSON / gRPC / 인증(Authentication)

- SOAP / HATEOAS / Open API 스펙과 Swagger

+ [인증()] Cookie 기반 / OpenID / SAML

+ [인증()] OAuth / 기본 인증 / Token 인증 / JWT / SAML

 

8. 캐싱 <대분류 3가지, 중분류 1가지, 1가지>

- CDN / 서버 사이드 / 클라이언트 사이드

*서버 사이드 : Redis() / Memcached()

 

9. 웹 보안 <10가지>

- [해싱 알고리즘] MD5(사용 안하는 이유) / SHA(Secure Hash Algorithm) Family / scrypt / bcrypt

- [기타 보안] HTTPS / 콘텐츠 보안정책 / CORS / SSL/TLS / OWASP 보안정책

 

10. 테스팅 <3가지>

- 통합 / 유닛 / 기능 테스트

 

11. CI/CD

 

12. 설계와 개발 원칙 <4가지 + 3가지>

- SOLID / KISS / YAGNI / DRY

- GOF 디자인패턴 / DDD / TDD

 

13. 아키텍쳐 패턴 <4가지 + 1가지>

- 모놀리식 애플리케이션 / 마이크로서비스 / SOA / 서버리스

- CQRS와 이벤트 소싱

 

14. 검색 엔진 <1가지 + 1가지>

- Elasticsearch

- Solr

 

15. 메시지 브로커 <◎★ 1가지 + 1가지>

- ◎★ RabbitMQ

Kafka

 

16. 컨테이너화 vs 가상화 <1가지 + 1가지>

Docker

LXC

 

17. GraphQL <◎★ 1가지 + 1가지>

- ◎★ Apollo

- Relay Modern

 

18. Graph Databases <1가지>

- Neo4j

 

19. 웹 소켓

 

20. 웹 서버 <◎★ 1가지 + 3가지>

- ◎★ Nginx

- Apache / Caddy / MS IIS

 

21. 확장성을 고려한 빌딩 (제품의 지속가능성 목적) <4가지 + 1가지>

1) [마이그레이션 전략] 단계적 기능 축소 / Throttling / Backpressure / Circuit Breaker

2) Migration 전략

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

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

5) [차이점 이해하기] Instrumentation vs Monitoring vs Telemetry