많은 분들께서 긱뉴스에서 공개한 무료 학습 자료를 공유해주셨는데요, 저는 그중에서 백엔드 개발에 도움되는 도서는 어떤게 있을지 골라보았습니다.
제가 하고있는 업무와 연관이 있는 도서들을 골라본거라 모든 백엔드 개발자가 반드시 배워야 한다는 아니지만, 적어도 배워두면 써먹을 수 있다는 수준으로 이해해 주세요 🙏
✔️ Java (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#java)
Java 는 현재 매우 인기있는 백엔드 개발 언어입니다. 특히 대량의 트래픽을 대응하거나 다양한 솔루션과의 연계를 위해 많은 회사에서 Java 를 사용하고 있습니다.
점프 투 자바는 이런 Java 의 기초적인 내용을 학습하기 좋은 도서로 저도 많은 도움을 받았던 도서입니다.
✔️ Git (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#git)
이건 사실 백엔드 개발자 뿐만 아니라 모든 분야의 개발자들이 필수로 배워야 하는 항목입니다.
제가 신입일때는 SVN 이라는 버전관리 툴을 썼습니다만 오픈소스의 활성화와 다양한 편의 기능으로 현재는 Git 을 쓰는게 대세인거로 보입니다.(아마 몇몇 분들은 SVN 이 뭔지도 모르시겠죠?😂)
코드 및 버전 관리, 협업을 위해서는 반드시 배워야하는 툴입니다.
✔️ Go (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#go)
제가 진행하는 업무 환경에서 반드시 필요한건 아니지만, 몇몇 유명한 오픈소스에서 쓰고 있고 간단한 웹서버를 만들기에 좋습니다.(자체적으로 지원하는 라이브러리를 통해 몇줄의 코드로 웹서버를 띄울수 있는걸 보고 매우 놀랐습니다)
특히나 고루틴의 경우 코루틴과 마찬가지로 비동기 프로그래밍에 유용한 도구이기 때문에 잘 사용하면 매우 효과적인 비동기 처리를 해보실 수 있습니다.
✔️ 리눅스 서버를 다루는 기술 (https://web.archive.org/web/20220107111504/https://thebook.io/006718/)
윈도우 서버와 같은 특별한 환경이 요구되는 상황이 아니라면 백엔드 어플리케이션은 리눅스 환경에서 운영하는게 대부분입니다.
따라서 어플리케이션의 운영 및 관리, 장애대응 등을 위해서는 어느정도 리눅스를 능숙하게 다루실 줄 알아야 합니다.
✔️ Operation System(https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#operation-system)
어플리케이션이 건물이라면 Operation System 은 땅과 같은 존재죠. 그렇기에 어플리케이션이나 솔루션은 Operation System 에 영향을 크게 받을수 밖에 없고 어플리케이션을 잘 운영하기 위해서는 어느정도 Operation System 에 대한 이해가 필요합니다.
✔️ Python (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#python)
말이 필요없는 유명한 Language 중 하나죠.
인터프리터 언어라서 성능은 Java 에 비해 조금 떨어질수는 있지만 Java 에 비해 문법이 쉽고 간단한 스트립트나 툴을 개발할 수 있는 장점이 있습니다.
꼭 백엔드 어플리케이션으로 개발을 안하더라도 운영에 필요한 스크립트나 테스트 도구 등으로 활용할 수 있어 배워두면 유용한 언어입니다.
✔️ Springboot (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#springboot)
Java 나 Kotlin 으로 웹서버를 개발한다면 빠질 수 없는 Framework 죠.
Netty 나 Vert.x 의 등장으로 비동기 논블록킹 웹서버 개발을 위해 Spring 을 떠나야 하나 고민을 했었는데 이를 Spring Webflux 로 멋지게 대응하여 비동기 논블록킹 서버도 구현이 가능한 Framework 입니다.(심지어 netty 는 webflux 에서 사용이 가능하죠)
앞일은 어떻게 될지 모르겠지만 Springboot 기반 어플리케이션이 사라지기는 쉽지 않아 보이기에 Java 나 Kotlin 개발자라면 반드시 배워야 합니다.
✔️ Elasticsearch (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#elastic)
반드시 배워야 하는 솔루션은 아니지만 혹시나 검색기능이나 prometheus 나 grafana 등과 같은 모니터링 도구를 사용할 때 쓰기 좋은 솔루션입니다.
특히나 김종민님께서 정리해주신 가이드북은 자세한 설명과 예제가 있어 따라해보기 좋습니다.