요즘 백엔드 기술 관련하여 도움이 될 만한 무료 리소스들은 넘쳐납니다. 그러나 가장 중요한 것은, 무엇을 할 것인가 입니다.
백엔드 개발자가 되기 위하여 필요한 요구사항들과 기술 목록을 가져왔습니다. 만약 이 개념들이 친숙해진다면, 이 분야에 있어서 유망한 경력을 가질 수 있을 겁니다.
📌 인터넷
- HTTP, domain, hosting 등
CS(Computer Science) 분야는, 기본적인 인터넷 기능에 정통해야 합니다.
📌 프론트엔드
- HTML, CSS, JavaScript 기초
클라이언트 측이 어떻게 작동 하는지 알지 못한다면, 서버측의 복잡한 세부 사항을 배울 수 없습니다.
📌 운영체제
- kernel, program execution, interrupts, signals, direct memory access, models 등
운영체제는 응용 프로그램의 실행을 제어하고 컴퓨터가 작동할 수 있도록 사용자와 하드웨어 사이의 인터페이스 역할을 합니다.
📌 자료구조와 알고리즘
- stack, queue, linked list, tree, graph, hashing, sorting & searching
이 개념들에 대해 전문가가 될 필요는 없습니다. 그러나 알고 있으면 도움이 됩니다.
📌 프로그래밍 언어
- Python, PHP, Ruby, C#, Java, JavaScript
📌 버전 컨트롤
- Github, Git
코드의 변경사항을 추적하고 관리하는 도구입니다.
📌 프레임워크
- Spring Boot, Node.js, Django 등
📌 데이터베이스
- NoSQL, RDBMS
📌 API
서로 다른 프로그램 간의 연결을 구성하여 보다 원활한 UX를 만듭니다.
📌 데이터베이스 캐싱
캐싱은 동일한 데이터에 반복해서 접근해야 하거나 많은 연산이 필요한 일일때, 결과를 빠르게 얻고자 가까운 곳에 적용하는 것을 뜻합니다.
📌 테스팅
- 단위 테스트, 통합 테스트, 기능 테스트
📌 웹 보안
- HTTPS, SSL, CORS, OWASP, hash 알고리즘
서버에 보안 프로토콜을 구축할 때 유용한 개념입니다.
📌 CI/CD
지속적 통합, 지속적 배포. 코드 변경사항을 신속하고 안정적으로 배포할 수 있습니다. 또한 대량의 로그를 생성하고 수동 작업을 줄입니다.
📌 컨테이너화
코드를 실행하는 데 필요한 라이브러리 등을 함께 묶을 수 있습니다.
📌 웹 서버
- Apache, Nginx, HTTP caching 등
🐣 면접에도 유용한 개념들 입니다.