Contents
부트캠프에서 학습과정을 마치고 프로젝트를 진행하는 중입니다. 예전에 배웠던 것인데 초면같은 애들도 있고 개념이 정립되지 않아 남에게 설명하기 애매한 부분을 너무 많이 마주치게 되었습니다.
그래서 부트캠프에서 진행한 과정을 정리해봤습니다. 기록해서 제대로 정리해 놓지 않으면 나중에 getter를 검색하고 캡슐화를 따로 검색하게 되고 둘이 상관관계가 있다는 것을 뒤늦게 알거나 모른 채 지나갈지도 모릅니다.
그런 일을 막기 위해 공부한 과정을 키워드로 정리해보았습니다!!
그런데 이게 왜 백엔드 개발자라면 알아야 되는 거냐고 물으신다면..
부트캠프는 최신 기술과 개발자에게 필수적인 지식을 몇 개월 안에 최대한 많이 때려 넣는 것이기 때문에.. 일단 여기 있는 범주가 기본적으로 개발자에게 필요한 소양이라고 생각했습니다.
저와 같이 어디서 배웠는지 헷갈리고, 연관관계도 헷갈리는 분들에게 조금이 나마 도움이 되어 검색이 용이해졌으면 해서 포스팅합니다.
그리고 아직 개발을 시작하지 않은 분들은 이런 것들을 배워야 하는구나 정도 알고 있으면 좋을 것 같습니다.
1. git, linux, java, 객체 지향
기초
웹 클라이언트 - 웹 서버
리눅스
CLI 명령어, 사용권한, 환경변수
git
명령어, 워크플로우
자바 기초
변수/타입, 문자열, 연산자, 콘솔 입출력, 제어문, 배열
객체지향 프로그래밍 기본
클래스와 객체 차이
필드와 메서드: static, instance, 메서드, 오버로딩
생성자: this
내부 클래스: 멤버, 지역 내부 클래스
객체지향 프로그래밍 심화
상속: super, 포함관계, 메서드 오버라이딩, object 클래스
캡술화: 제어 접근자, getter, setter
다형성: 참조변수의 타입변환, intanceOf
추상화: abstract 제어자, final, 인터페이스
컬렉션
enum, 제네릭, 예외처리
컬렉션 프레임워크: List, Iterator, Set, Map<K,V>
자바 심화
애너테이션: 표준, 메타
람다: 기본 문법, 함수형 인터페이스, 메서드 레퍼런스
스트림: 파이프라인 구성, Optional
파일 입출력(I/O), 스레드, JVM
2. 자료구조
자료구조/ 알고리즘
재귀
자료구조
스택, 큐, 트리, 그래프, 이진 탐색 트리
Search Algorithm: Tree traversal, BFS/DFS
알고리즘
의사코드, 시간복잡도
탐욕 알고리즘, 구현-시뮬레이션, 완전 탐색 알고리즘, 이진 탐색 알고리즘
순열/조합, 정규 표현식
3. HTTP
웹 애플리케이션 작동 원리
네트워크를 만드는 기술: TCP/IP, TCP/UDP, PORT, URL,DNS
웹을 구성하는 기술: 웹, 클라이언트-서버 아키텍쳐, 웹 애플리케이션 아키텍쳐, 웹 애플리케이션의 요청 흐름, 웹 애플리케이션의 구현, SSR/CSR, CORS
HTTP: HTTP Messages, Requests, Responses, HTTP를 이용한 클라이언트-서버 통신과 API
4. 데이터 베이스
관계형 데이터베이스
SQL: 기초, ACID
설계: Schema & Query Design, DB 설계, ERD 설계
심화: DB 정규화, SQL 종류, SQL 내장함수
5. Spring
Spring Framework 기본
스프링 특징: 라이브러리 vs 프레임워크, POJO, Ioc, DI, AOP, PSA
스프링 모듈 구성: 아키텍쳐, 스프링의 모듈 구성
스프링 부트
Spring Framework 핵심
DI: 스프링 컨테이너, 빈, 빈 스코프, 싱글톤, 컴포넌트 스캔, 의존관계 주입 방법
AOP: 용어, 어드바이스, Pointcut 표현식, JoinPoint, 애너테이션 사용
6. 스프링 MVC
API 계층
Spring MVC 아키텍쳐: MVC 개념, MVC 동작 방식과 구성요소
Controller: 클래스 설계/구조 생성, 핸들러 메서드, 응답데이터에 ResponseEntity 적용, Http 헤더, Rest Client
Dto: HTTP 요청/응답에서 DTO, 유효성 검증
서비스 계층
서비스 계층에서 DI: DI를 이용해, 서비스 계층과 API 계층 연동
Mapper를 이용해, DTO클래스와 Entity 클래스 매핑
예외 처리
MVC에서 예외 처리: @ExceptionHandler, @RestControllerAdvice
비즈니스 로직에 대한 예외 처리: 예외 던지기 및 예외 처리, 의도적으로 예외 던지기
JDBC 기반 데이터 액세스 계층
Spring Data JDBC: JDBC 개념, 도메인 엔티티 및 테이블 설계
데이터 액세스 계층 구현: 도메인 엔티티 클래스 정의, 서비스/리포지토리 구현
JPA 기반 데이터 액세스 계층
JPA 엔티티 매핑, 엔티티 간의 연관 관계 매핑
데이터 액세스 계층 구현
트랜잭션
스프링에서 트랜잭션 처리: 선언형 방식의 트랜잭션, JTA를 이용한 분산 트랜잭션
테스팅
단위 테스트
Junit을 이용한 단위 테스트: 비즈니스 로직에 적용
Hamcrest를 사용한 Assertion
슬라이스 테스트: API 계층 테스트, 데이터 액세스 계층 테스트
Mockito & TDD(테스트 주도 개발)
API 문서화
Rest Docs: Controller 테스트 케이스에 적용, 스니핏을 이용한 API 문서화, Asciidoc
애플리케이션 빌드 / 실행 / 배포
Gradle Task
7. Security
인증 / 보안 기초
HTTPS, Hashing, Cookie, Session
웹 보안 공격: SQL injection, CSRF
Spring Security 기본
기본 구조, 웹 요청 처리 흐름, Filter / FiterChain, DelegatingPasswordEncoder
인증 구성 요소 이해: 인증 처리 흐름, 인증 컴포넌트
권한 부여 구성 요소 이해: 권한 부여 처리 흐름, 접근 제어 표현식
JWT 인증
JWT: 토큰 기반 인증 개념, 토큰 기반 자격 증명, 장단점, 생성 및 검증 테스트
Spring에서 JWT: 자격 증명을 위한 로그인 인증 구현, 자격 증명 및 검증 구현
OAuth2 인증
OAuth2 개념, 동작 방식
8. Cloud
클라우드 운영 환경 구성
AWS: 클라우드 컴퓨팅, Deploy, EC2, RDS, S3, 3 티어 아키텍쳐 배포 전략
배포 컨테이너
Docker: CLI 사용, 이미지 다루기, 컨테이너와 VM의 비교
배포 자동화
AWS 파이프라인, 서버 환경변수 설정, Github-Actions
클라우드 운영 전략
Proxy Server
수평 확장: 로드 밸런서, 오토스케일링
웹 서버: Tomcat, Jetty, NginX(프록시 서버, 로드 밸런서)
VPC
9. Webflux
리액티브 프로그래밍: 선언형 프로그래밍 방식
프로젝트 리액터
마블 다이어그램, 스케줄러, Operators
Spring WebFlux: 스프링을 사용해 리액티브한 웹 애플리케이션 구현
'Boot Camp' 카테고리의 다른 글
부트캠프의 마지막 섹션이 끝났다 (0) | 2022.10.22 |
---|---|
다시 한번 시작하자 (0) | 2022.10.22 |
부트캠프 두 달차의 회고 (0) | 2022.10.22 |
코딩테스트를 준비하자 (0) | 2022.10.21 |
부트캠프 한 달 회고 (0) | 2022.10.21 |
댓글