본문 바로가기
Boot Camp

백엔드 개발자라면 공부해야 되는 것!

by 2D3 2022. 10. 29.
728x90

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: 스프링을 사용해 리액티브한 웹 애플리케이션 구현

     

     

    728x90

    'Boot Camp' 카테고리의 다른 글

    부트캠프의 마지막 섹션이 끝났다  (0) 2022.10.22
    다시 한번 시작하자  (0) 2022.10.22
    부트캠프 두 달차의 회고  (0) 2022.10.22
    코딩테스트를 준비하자  (0) 2022.10.21
    부트캠프 한 달 회고  (0) 2022.10.21

    댓글