🧩 값 검증 사용자가 요청을 보냈을 때 올바른 값인지 유효성 검사를 하는 과정 - 검사 위치 : 어느 계층에서 해도 OK이지만 보통 프레젠테이션 계층에서 컨트롤러에 요청이 오는 순간 검증 코드 작성 - 서버의 안정성을 챙길 수 있다. ▷ Java Bean Validation API : 애너테이션 기반 검증 & 데이터 유효성 검사 /* 문자열 다룰 때 사용 */ @NotNull// null 사용하지 않음 @NotEmpty// null, 공백/공백만으로 채워진 문자열 허용X @NotBlank// null, 공백 허용X @Size(min=?, max=?)// 최소 길이, 최대 길이 제한 @Null// null만 가능 /* 숫자 다룰 때 사용 */ @Positive// 양수만 허용 @PositiveZero// ..
📗 CI/CD 빌드부터 배포까지의 과정을 자동화하고, 잘 되는지 모니터링 하는 방법 🧩 CI (Continuous Integeration, 지속적 통합) - 빌드와 테스트를 자동화하는 과정 - 변경 사항을 자동으로 테스트해 애플리케이션에 문제 없음 보장 - 코드를 정기적으로 빌드, 테스트하므로 여러 명이 동시에 작업해도 충돌 방지하고 모니터링 가능 🧩 CD (Continuous Deployment, 지속적 제공과 지속적 배포) - 배포 준비가 된 코드를 자동으로 서버에 배포하는 작업을 자동화하는 것 ○ 지속적 제공에서의 CD - 애플리케이션에서 적용한 코드의 빌드와 테스트를 성공적으로 진행했을 때, 코드 저장소(예 : 깃허브)에 자동으로 업로드하는 과정 ○ 지속적 배포에서의 CD - 릴리스 = 지속적 제..
📗 AWS ⭐ 배포 : 실제 서버에 스프링 부트 서버를 올려 실행하는 것 AWS란? 클라우드 컴퓨팅 서비스를 이용해 배포하는 것 AWS로 서비스 배포하기 ⭐ 🧩 EC2 - AWS에서 제공하는 클라우트 컴퓨팅 서비스. (원격 서버) - 가상의 PC = 서버 1대 🧩 오토 스케일링 그룹 - 유동적으로 EC2 관리 - 사용자의 요청 횟수에 따라 EC2 늘이거나 줄임 🧩 로드 밸런서 - 요청 분산시키는 역할 - 대상 그룹 (타깃 그룹) : 요청 어디로 분산시킬지 정하는 그룹 🧩 RDS - AWS에서 제공하는 원격 DB S3 - 파일 저장소 일래스틱 빈스토크 ⭐ 앞의 서비스를 한 번에 설정. 서버 업로드용 코드만 작성해도 서버를 쉽게 올릴 수 있음 ② 번들 형태 (.war 파일)로 일래스톡 빈스토크에 업로드 ③ ..
📗 OAuth ⭐ 📌 OAuth란? 제3서비스에 계정 관리를 맡기는 방식 (네이버 로그인, 구글 로그인) 🧩 OAuth 용어 정리 리소스 오너 (Resource Owner) - 자신의 정보를 사용하도록 인증 서버에 허가하는 주체 → 서비스 이용하는 사용자 리소스 서버 (Resource Server) - 리소스 오너의 정보를 가지며, 리소스 오너의 정보를 보호하는 주체 → 네이버, 구글, 페이스북 인증 서버 (Authorization server) - 클라이언트에게 리소스 오너의 정보에 접근할 수 있는 토큰을 발급하는 역할을 하는 애플리케이션 클라이언트 어플리케이션 (Client Application) - 인증 서버에게 인증을 받고 리소스 오너의 리소스를 사용하는 주체 → 지금 만들고 있는 서비스 🧩 리소..
📗 토큰 기반 인증 ⭐ 토큰 기반 인증 인증 정보를 서버/세션에 저장하지 않고, 클라이언트 측에서 발급받은 토큰으로 인증하는 방식 * 토큰이란? 서버에서 클라이언트를 구분하기 위한 유일한 값 토큰을 전달하고 인증받는 과정 - 서버가 토큰을 생성해 클라이언트에게 제공하면, 클라이언트는 이 토큰을 갖고 있다가 요청할 때마다 요청 내용과 함께 토큰을 전송한다. (= 토큰을 갖는 주체 : 클라이언트) 토큰 기반 인증 특징 ① 무상태성 사용자의 인증 정보가 담긴 토큰이 서버가 아닌 클라이언트에 있어 서버에 저장할 필요가 없음을 의미. - 상태 관리 : 클라이언트에서 사용자의 인증 상태를 유지하면서 이후 요청을 처리하는 것 → 서버는 무상태로 효율적인 검증 가능 ② 확장성 토큰을 가지는 주체가 클라이언트이므로 갖고..
스프링 시큐리티 ver. 로그인/로그아웃, 회원 가입 📗 스프링 시큐리티⭐ ⭐ 인증과 인가 - 인증 (Authentication) : 등록된 사용자의 신원을 입증하는 과정 (예 : 로그인 시 누구인지 확인하는 과정) - 인가 (Authorization) : 특정 부분에 접근할 수 있는지 권한을 확인하는 작업 (예 : 관리자 페이지) 스프링 시큐리티 (P.201,202) 스프링 기반 애플리케이션 보안(인증, 인가,권한)을 담당하는 스프링 하위 프레임워크 - 역할 : 보안 관련 옵션 제공 (CSRF 공격, 세션 고정 공격 방어) * CSRF 공격 : 사용자 권한을 갖고 특정 동작을 수행하도록 유도하는 공격 * 세션 고정 공격 : 사용자의 인증 정보를 탈취하거나 변조하는 공격 - 필터 기반 동작 Usernam..
📗 타임리프 ⭐ 📍 템플릿 엔진 개념잡기 템플릿 엔진 : 스프링 서버에서 데이터를 넘겨받아 HTML에 데이터를 넣어 동적 웹 페이지를 만들어주는 도구 타임리프 표현식 ${..} : 변수의 값 표현식 #{..} : 속성 파일 값 표현식 @{..} : URL 표현식 *{.} : 선택한 변수의 표현식. th:object에서 선택한 객체에 접근 타임리프 문법 th:text 텍스트 표현 시 사용 th:text=${person.name} th:each 컬렉션 반복 시 사용 th:each="person:${persons}" th:if 조건이 true일 때만 표시 th:if="${person.age} >= 20" th:unless 조건이 false일 때만 표시 th:unless="${person.age} >= 20" ..
📗 API 와 REST API API : 클라이언트-서버 간 상호작용하기 위한 매개체 ⇨ 클라이언트 요청을 서버에 전달 ⇨ 서버 결과물을 클라이언트에게 전달 📍 REST API (참고) 자원을 이름으로 구분해 자원의 상태를 주고받는 API 방식 - 웹 장점을 최대 활용한 API - REST : Representational State Transfer ▷ 특징 - 서버/클라이언트 구조 - 무상태 - 캐시 처리 가능 - 계층화 - 인터페이스 일관성 ▷ 장단점 👍 - URL만 보고도 무슨 행동하는 API인지 확인 가능 - 클라이언트와 서버 역할이 명확히 분리 (∵ 상태가 없으므로) - HTTP 표준 사용하는 모든 플랫폼에서 사용 가능 👎 - HTTP 메소드 개수에 제한 있음 (GET, POST) - 설계 위해..
📗 데이터베이스란? DB : 데이터를 효율적으로 보관하고 꺼내볼 수 있는 곳 ⇨ 장점 : 많은 사람이 안전하게 데이터를 사용하고 관리 가능 (동시 접근할 수 있어야 함) 📍 DBMS - DB를 관리하기 위한 SW - 분류 : 관계형, 객체-관계형, 도큐먼트형, 비관계형 등 (관리 특징에 따라) - 예) 관계형 ; ORACLE, MySQL ▷ RDBMS (관계형 DBMS) - 테이블 형태로 이뤄진 데이터 저장소 - 관계형 모델 기반 ▷ H2, MySQL - H2 : 스프링 부트가 지원하는 인메모리 관계형 DB. (JAVA로 작성, 테스트용) - MySQL : 실제 서비스 올리는 용 ➕ DB 기초 용어 - 테이블 : DB에서 데이터 구성하기 위한 가장 기본적 단위 - 행 : 테이블의 가로로 배열된 데이터 집..