기록
인프런 초보 백엔드 개발자 로드맵 강의 수강 본문
[무료] 초보 백엔드 개발자 로드맵 - 인프런 | 강의
웹, CI/CD, API 작성법, DB, 배치 처리 등 백엔드 개발자가 알아야 하는 기본적인 지식들을 소개합니다., - 강의 소개 | 인프런
www.inflearn.com
인프런 초보 백엔드 개발자 로드맵 강의 수강하면서 자유롭게 메모함
이 강의와 이 글을 같이 읽으면 전체적인 맥락 파악에 도움이 될 것(https://yozm.wishket.com/magazine/detail/2064/)
- json은 다양한 언어에서 사용 가능함
- yaml은 주석이 가능
- yaml 야믈?은 learn yaml 사이트에서 자세히 알 수 있음
- 리눅스 명령어
-> iterm2 단어 선택 등 단축키 세팅 다시 함
참조: https://stackoverflow.com/questions/6205157/how-to-set-keyboard-shortcuts-to-jump-to-beginning-end-of-line
단어 단위로 삭제하려면 option + backspace
- 인증 Authentication
Who you are 누구인지 확인 - 인가 Authorization
What you can do 무엇을 할 수 있는지 확인 - NestJS
express.js 미들웨어를 사용할 수 있다는 장점 - spring
- 기업용 애플리케이션을 만드는데 필요한 것을 모두 갖추고 있는 프레임워크
- 태생 자체가 기업용 애플리케이션을 위해 만들어졌기 때문에 많은 것을 학습해야 함
- 같이 사용하는 JPA, spring batch, 시큐리티 등의 퀄리티도 매우 높음.
- spring은 이와 같이 학습량이 많음
- java는 발전이 더딘 편이나 코틀린이 나와서 이 부분이 어느정도 해소 됨
- 큰 회사에서는 대부분 스프링을 사용하기 때문에 취업에 유리하고, 커뮤니티가 큼
- FastAPI
- 파이썬 api만 작성하는 용도라면 적합하다고 생각.
- DB = 검색과 축적이 쉽도록 정리된 데이터의 모음
- RDB에는 MySQL, Oracle, PostgreSQL 등이 있지만 MySQL만 알아두면 다른 것도 문제없이 다룰 수 있을 것
- NoSQL = Not Only SQL
- RDB는 수정 삭제가 용이하지만, 성능을 높이려면 다른 장치를 고안해야 함 = 분산서버
- NoSQL은 RDB에 비해 그런 것이 잘 되어 있음
- 특히 MongoDB는 JSON과 매우 비슷하게 생긴 BSON 이라는 문서 모델을 저장함.
- 또한 클러스터를 지원해서 확장이 용이하고, 따라서 많은 요청이 오는 경우에도 속도가 늦어지지 않도록 잘 지원하고 있음
- redis는 key value 기반의 NoSQL 데이터베이스, 분산 캐시로 많이 사용함
- key를 기반으로 데이터를 잘 관리할 수 있도록 해 주기 때문에 DB 범주에 넣어도 된다고 생각함
- 빠른 성능을 지원하기 때문에 대부분의 회사에서 거의 기본으로 사용하고 있음
- ORM 오브젝트 릴레이션 매핑의 약자로, 클래스 오브젝트와 테이블의 관계를 클래스로 가져올 수 있도록 해주는 프로그램, 특정 클래스의 메서드를 실행하면 쿼리 생성을 하거나 해당 쿼리를 실행해줌
- 따라서 ORM을 사용하면, 쿼리 작성없이 DB 조작이 가능하고, 직관적으로 데이터를 관리할 수 있음
- 반면, 통계 쿼리 같은 복잡한 쿼리는 ORM이 아닌 RAW 쿼리를 사용하는 것이 더 좋은 경우가 많다.
- ACID 액시드는 원자성/일관성/격리성/내구성을 의미함. DB에서 데이터의 일관성을 유지할 수 있도록 해주고, 문제가 생길 시에는 이전으로 되돌릴 수 있게 해줌
- 트랜잭션: DB의 상태변화를 시키기 위해서 수행하는 작업의 단위
- 트랜잭션을 쓰기 때문에 동시다발적으로 발생하는 데이터가 변경 요청 중에도 DB 데이터가 안전하게 변경될 수 있도록 해줌
- N + 1: ORM 사용 시 많이 맞닥뜨리는 문제로, 관계된 클래스를 조회할 때 데이터 개수만큼 쿼리가 발생하는 것을 말함
- 의도한 쿼리는 조인을 사용해서 한 번만에 데이터를 가져오는 것을 의도했는데, 그게 아니라 N + 1번 실행돼서 불필요하게 많은 쿼리가 발생하는 것을 말함
- REST API
- GraphQL
- 현업에서의 API: 둘다 사용하는 방식을 많이 씀
- 배치처리: 일정기간 동안 데이터를 모아두었다가, 대량의 데이터 작업을 한 번에 하는 것을 말함. 또는, 일정 시간마다 주기적으로 실행해야 하는 작업을 말하기도 함. 즉, 스케줄링을 해서 작업을 처리하는 것을 말함
- crontab(리눅스)
- jenkins(주기적으로 빌드)
- spring batch
- node-schedule
- aws lambda
- azure function
- gcp cloud function
- 배포
- 도구없이 사용하면 FTP로, 파일 압축해서 배포
- CI: 배포 전 과정을 자동화하는 것
- CD: 배포하는 것을 고도화 하는 것
- CD - 롤링배포, 블루/그린 배포, 까나리 배포 등
- 도커
- OAuth
- 클라우드
- IDC 환경이 아닌 곳에서는 클라우드를 쓸 거임
- 유저가 서버를 가상으로 만들어서 서비스를 만들 수 있도록 해줌.
- 구름!
- 보안
- OWASP
'TIL*' 카테고리의 다른 글
'next' 모듈을 찾을 수 없습니다. (0) | 2023.08.17 |
---|---|
nvm 설치 도중 알게 된 .zshrc 에러 (0) | 2023.08.16 |
Vim (0) | 2023.06.15 |
focus-visible (0) | 2022.08.02 |
TypeScript !(Non-null assertion operator, Definite Assignment Assertions) (0) | 2022.07.29 |
Comments