파비의 매일매일 공부기록

깔끔한 파이썬 탄탄한 백엔드 - #12 더 좋은 백엔드 개발자가 되기 위해.. 본문

Study/Python

깔끔한 파이썬 탄탄한 백엔드 - #12 더 좋은 백엔드 개발자가 되기 위해..

fabichoi 2021. 8. 7. 23:30

이번장은 더 좋은 백엔드 개발자가 되기 위해 배워두면 좋을 주제들에 대한 이야기다.

저자가 이번장에서 이야기한 것 중에 나도 극 공감하는 게 하나 있는데

'백엔드 개발자는 DB와 친숙'해야 한다는 점이다.

 

15여 년 전만 해도 백엔드/프런트엔드의 구분이 크지 않았어서 둘 다 하는 경우가 많았는데

요즘은 백엔드 개발자는 프런트엔드 쪽은 거의 안 보는 거 같긴 하다. (물론 양쪽 다 업무 하시는 분, 공부하시는 분들이 있다. 근데 필수는 아닌 듯..)

 

다음의 요소들을 배워두면 좋다고 추천한다.

 

1. 자료구조 및 알고리즘 : 일단 더 좋은 직장에 이직을 위해서라도 필수적으로 공부해야 하는 분야. 특히 백엔드 개발의 경우 데이터 처리 시 자료구조 및 알고리즘을 알고 있으면 용이하다.

 - 리스트, 셋, 해시 맵(딕셔너리), 스택, 큐, 트리, 그래프, 정렬, 재귀 등.

 - 개인적으로는 리스트, 셋, 딕셔너리는 업무를 하다 보면 자연스레 익혀지는 것도 있다. 그러나 공식 문서들을 더 깊게 찾아보면서 이해가 필요한 부분인 것 같다.

 

2. 데이터베이스 : 시스템에 맞는 적절한 데이터 베이스를 사용해서 시스템을 구현할 줄 알아야 한다. RDBMS 외에 N-RDBMS에 대해서도 공부할 것.

 

3. 마이그레이션 : git으로 코드 형상 관리하듯 데이터베이스의 스키마도 형상 관리를 해주는 걸 추천한다. 장고는 이미 있는 기능이라 부가적인 앱을 쓸 필요는 없을 듯. Liquibase나 Flayway를 추천.

 

4. 마이크로 서비스 아키텍처 : 한창 내가 빠져(?) 있었던 아키텍처. 대세라고 해서 더 매료된 듯. 실무를 좀 하다 보니 모놀로 틱 + 마이크로 아키텍처가 적절한 것 같다. 모든 서비스에 대해 각각의 서버가 존재하는 게 항상 좋은 건 아닌 거 같아서..

 

5. 리눅스 & 데브옵스 : CICD나 IAC 기술을 사용하여 코드로 시스템 인프라스트럭처 구현 및 관리를 하는 기능이 필요하다. 그러려면 당연히 리눅스 사용에는 익숙해야 할뿐더러, 시스템 데몬이나 커널에 대한 기초적인 지식 정도는 익혀야 할 듯싶다. 예전에는 Chef, Puppet, Ansible(요것만 들어봄) 등을 고전적으로 서버 설정 및 관리에 이용했다면, 최근에는 docker와 같은 가상화 기술과 terraform 같은 provisioning 기술 등도 소개된다. 나는 AWS에 익숙지 않아서 terraform을 사용해보지 않았지만 저자는 추천. 매우 유용하다고 한다. 심지어 테스트도 가능하다고 한다;; 코드라서 모듈화도 가능하며 모듈들을 오픈소스로도 배포가 가능하다고 한다.

- AWS는.. 정말 익히긴 해야 할 것 같다. ㅠㅠ 현재 실무에서 안 써서 동기부여가 그다지 많이 되지는 않지만;

 

반응형
Comments