IT 분야의 엔지니어 / 개발자라면 다들 한번씩 보았을 rodemap.sh의 로드맵. 기존에는 데브옵스 엔지니어 정도만 살펴본 적이 있었는데, 백엔드 로드맵을 제대로 보는 건 이번이 처음인듯.
백엔드 개발자 로드맵은 다음 링크(https://roadmap.sh/backend)에서 확인할 수 있는데, 캡처본만 봐서 몰랐지만 사이트에서 각 항목을 클릭해보면 자세한 설명과 참고할 만한 자료들을 확인할 수 있다.
- 인터넷
- 인터넷이 어떻게 동작하는지?
- HTTP란?
- 브라우저란? 브라우저가 어떻게 동작하는지?
- DNS란? 어떻게 동작하는지?
- 도메인 이름이란?
- 호스팅이란?
- 언어 학습
- Java
- Javascript
- C#
- Python
- PHP
- Ruby
- 버전 관리 시스템(VCS: Version Control Systems)
- Git
- 저장소 호스팅 서비스
- Github
- Gitlab
- Bitbucket
- OS 및 일반적 지식
- POSIX 기초(stdin, stdout, stderr, pipes)
- 터미널 사용
- 기본적인 터미널 명령어: grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill, dig
- OS 지식
- OS가 일반적으로 어떻게 동작하는지
- 메모리 관리
- 프로세스간 통신
- I/O 관리
- 기초 네트워크 개념
- 스레드 및 동시성
- 프로세스 관리
- 관계형 데이터 베이스
- PostgreSQL
- MySQL
- MariaDB
- MySQL
- Oracle
- NoSQL 데이터베이스
- Document DB: MongoDB, CouchDB
- Time Series: InfluxDB, TimeScale
- Realtime: Firebase, RethinkDB
- Column DB: Cassandra, HBase
- Key-Value: Redis, DynamoDB
- GraphDB: Neo4j
- 데이터 베이스에 대한 추가 지식
- ORM
- ACID
- 트랜잭션
- N+1 문제
- 정규화
- 실패 모드
- 성능 프로파일링
- 데이터베이스 확장
- 데이터베이스 인덱스
- 데이터 복제
- 샤딩 전략
- CAP 정리(Theorem)
- API에 대한 학습
- HATEOAS
- Open API 스펙
- 인증
- 쿠키기반
- OAuth
- 기본 인증
- 토큰 인증
- JWT
- OpenID
- SAML
- REST
- JSON API
- SOAP
- gRPC
- GraphQL
- 캐싱
- 클라이언트 측 캐싱
- 서버 측 캐싱
- Redis
- Memcached
- CDN
- 웹 보안 지식
- 해싱 알고리즘
- MD5 개념 및 사용하지 말아야하는 이유
- SHA 패밀리
- scrypt
- bcrypt
- API 보안 모범 사례
- HTTPS
- OWASP Risks
- CORS
- SSL/TLS
- CSP
- 서버 보안
- 해싱 알고리즘
- 테스트
- 통합 테스트
- 유닛 테스트
- 기능 테스트
- CI/CD
- 소프트웨어 디자인 & 아키텍처
- 디자인 및 개발 원칙
- GOF 디자인 패턴
- 도메인 주도 디자인
- 테스트 주도 개발
- CQRS
- 이벤트 소싱
- 디자인 및 개발 원칙
- 아키텍처 패턴
- 모놀리틱 앱
- 마이크로 서비스
- SOA
- 서버리스
- 서비스 메시
- 12-Factor 앱
- 검색 엔진
- Elasticsearch
- Solr
- 메세지 브로커
- RabbitMQ
- Kafka
- 컨테이너화 vs 가상화
- 쿠버네티스
- 도커
- LXC
- GraphQL
- Apollo
- Relay Modern
- WebSockets
- SSE(Server Sent Events)
- 웹 서버
- Nginx
- Apache
- Caddy
- MS IIS
- 확장성을 위한 구성
- Instrumentation, Monitoring, Telemetry 차이
- 완화 전략
- Graceful degradation
- Throttling
- Backpressure
- Loadshifting
- Circuit Breaker
- 마이그레이션 전략
- 확장 유형
- 가시성
- 메트릭 로깅 및 무언가 잘못되었을 때 디버깅 및 이슈 해결을 도울 수 있는 잘못된 관찰 가능한 기타 항목들
나는 현재 직무에서 개발을 못하는 것으로 인한 제약사항이 크게 느껴져서 프로그래밍 언어 학습을 시작한 것이 커서 어떠한 백엔드 개발자가 되고싶다라는 구체적인 생각은 하고있지 않았었다. 다만, 과거 경험들을 돌이켜 보면 새로운 도구나 시스템을 먼저 접해보고 방법들을 정리해 다른 구성원들이 조금 더 편하게 사용할 수 있었던 이런 경험들에서 보람을 느꼈었다.
그래서 궁극적으로는 다른 개발자들의 편의를 향상시킬 수 있는 개발자 플랫폼을 구성하는데 기여하고 싶고, 이러한 목표에 가까워지기 위한 수단의 하나로 개발을 배우고자 한다.
위의 백엔드 개발자 로드맵에 나온 기술 스택으로 보면 10% 정도만 그나마 실무에서 사용한 경험이 있고(CI/CD, Git과 관련된 버전 컨트롤 시스템, 도커와 쿠버네티스와 같은 컨테이너 기술, NGINX/Apache와 같은 웹 서버 등), 80%는 이론적인 기초지식 혹은 간단한 실습까지만, 나머지 중 10%는 개념만 들어본 정도라 아직 갈 길이 멀다 ㅜㅜ 하루 이틀 하고 끝낼 문제는 아니니 길게 보고 커리어와 잘 병행할 수 있도록 노력해야겠다.
'ETC' 카테고리의 다른 글
2022년도 회고 및 백엔드 개발을 배우려고 하는 이유(feat. 제로베이스 부트캠프) (1) | 2023.05.15 |
---|---|
Chrome 브라우저 창 전체 스크롤/특정 컴포넌트만 스크린샷하기(크롬 개발자도구 활용) (0) | 2023.01.14 |
티스토리 블로그에 Gist로 코드 스니펫 삽입하기 (0) | 2023.01.09 |
개발블로그를 시작하며 (0) | 2022.01.20 |