본문 바로가기

SpringBoot

(26)
[스프링 부트 3 백엔드 개발자 되기] ch 12 CI/CD 도입하기 1. CI/CD 1) 지속적 통합, CI - CI는 Continuous Integration을 줄인 표현, 개발자를 위해 빌드와 테스트를 자동화하는 과정- CI는 변경 사항을 자동으로 테스트해 애플리케이션에 문제가 없다는 것을 보장한다. 그리고 코드를 정기적으로 빌드하고, 테스트하므로 여러 명이 동시에 작업을 하는 경우 충돌을 방지하고 모니터링할 수 있다. - 코드 변경 사항이 코드 저장소에 업로드되면 CI를 시작하고, CI 도중 문제가 생기면 실패하므로 오류도 쉽게 파악할 수 있다.   2) 지속적 제공과 지속적 배포, CD - CD는 CI 작업을 끝낸 다음 실행하는 작업이다. 배포 준비가 된 코드를 자동으로 서버에 배포하는 작업을 자동화하는 것이다.  지속적 제공에서의 CD 의미 - 애플리케이션이 적..
[스프링 부트 3 백엔드 개발자 되기] ch 11. AWS에 프로젝트 배포하기 1. AWS - 다른 PC에서도 서비스에 접속하려면 실제 서버에 스프링 부트 서버를 올려 실행해야 한다. 이런 행위를 실무에서는 배포라고 한다. - 배포는 서버용 PC를 구매해서 배포하는 방법과 AWS와 같은 클라우드 컴퓨팅 서비스를 이용해 배포하는 방법이 있다. - AWS는 컴퓨팅 서비스, 네트워크 서비스, 데이터베이스 서비스, 스토리지 서비스 등 다양한 서비스를 제공한다.  - 서비스를 AWS에 배포하려면 AWS 상에서 서버를 구성해야 한다. 쉽게 말해 AWS 상의 가상 PC를 마련해야 한다.  EC2 - AWS에서 제공하는 클라우드 컴퓨팅 서비스로 가상의 PC 즉, 서버 한 대를 임대하는 서비스  오토 스케일링 그룹 - 유동적으로 EC2를 관리- 사용자의 요청 횟수에 따라 EC2를 늘이거나 줄인다...
[스프링 부트 3 백엔드 개발자 되기] ch 10. OAuth2로 로그인/로그아웃 구현하기 1. OAuth - 제 3의 서비스에 계정 관리를 맡기는 방식 - 흔히 볼 수 있는 네이버로 로그인하기, 구글로 로그인하기 같은 방법 - OAuth를 사용하면 인증 서버에서 발급받은 토큰을 사용해서 리소스 서버에 리소스 오너의 정보를 요청하고 응답받아 사용할 수 있다.  리소스 오너(resource owner)- 인증 서버에 자신의 정보를 사용하도록 허가하는 주체 - 서비스를 이용하는 사용자  리소스 서버(resource server)- 리소스 오너의 정보를 가지며, 리소스 오너의 정보를 보호하는 주체 - 네이버, 구글, 페이스북이 리소스 서버에 해당  인증 서버(authorization server)- 클라이언트에게 리소스 오너의 정보에 접근할 수 있는 토큰을 발급하는 역할을 하는 애플리케이션 클라이언..
[스프링 부트 3 백엔드 개발자 되기] ch 9. JWT로 로그인/로그아웃 구현하기 1. 토큰 기반 인증  - 사용자가 서버에 접근할 때 이 사용자가 인증된 사용자인지 확인하는 방법은 서버 기반 인증과 토큰 기반 인증이 있다. - 스프링 시큐리티에서는 기본적으로 세션 기반 인증을 제공해준다. - 토큰 기반 인증은 토큰을 사용하는 방법이다. - 토큰은 서버에서 클라이언트를 구분하기 위한 유일한 값인데 서버가 토큰을 생성해서 클라이언트에게 제공하면, 클라이언트는 이 토큰을 갖고 있다가 여러 요청을 이 토큰과 함께 신청한다. 그럼 서버는 토큰만 보고 유효한 사용자인지 검증한다.  토큰을 전달하고 인증받는 과정   1)- 클라이언트가 아이디와 비밀번호를 서버에게 전달하면서 인증을 요청 2)- 서버는 아이디와 비밀번호를 확인해 유효한 사용자인지 검증- 유효한 사용자면 토큰을 생성해서 응답  3)..
[스프링 부트 3 백엔드 개발자 되기] ch 8. 스프링 시큐리티로 로그인/로그아웃, 회원가입 구현하기 1. 스프링 시큐리티 스프링 시큐리티(spring security)- 스프링 기반의 애플리케이션 보안(인증,인가,권한)을 담당하는 스프링 하위 프레임워크 - 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크 - CSRF 공격, 세션 고정(session flxation) 공격을 방어해주고, 요청 헤더도 보안처리를 해주므로 개발자가 보안 관련 개발을 해야 하는 부담을 크게 줄여줌 인증과 인가  인증(authentication)- 사용자의 신원을 입증하는 과정 인가(authorization)- 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업   필터 기반으로 동작하는 스프링 시큐리티  - 스프링 시큐리티는 다양한 필터들로 나누어져 있으며, 각 필터에서 인증,인가와 관련된 작업을 처..
[스프링 부트 3 백엔드 개발자 되기] ch 7. 블로그 화면 구성하기 1. 타임리프  1) 템플릿 엔진 개념 - 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, 즉 HTML 상에 그 데이터를 넣어 보여주는 도구 ex) - h1 태그에는 ${이름}이 text 어트리뷰트로 할당되어 있고, p 태그에는 ${나이}가 text 어트리뷰트로 할당되어 있다.- 이렇게 해두면 서버에서 이름,나이라는 키로 데이터를 템플릿 엔진에 넘겨주고 템플릿 엔진은 이를 받아 HTML에 값을 적용한다.  ex) 서버에서 보여준 데이터 예{ 이름:"홍길동" 나이:11} - 값이 달라지면 그때그때 화면에 반영하여 동적인 웹 페이지를 만들 수 있다. - 대표적인 템플릿 엔진으로는 JSP, 타임리프, 프리마커 등이 있다.   타임리프 표현식과 문법  - 표현식은 전달받은 데이터를 사용자들이 ..
[스프링 부트 3 백엔드 개발자 되기] ch 6. 블로그 기획하고 API 만들기 1. API와 REST API API- 프로그램 간에 상호작용하기 위한 매개체 - 클라이언트의 요청을 서버에 잘 전달하고, 서버의 결과물을 클라이언트에 잘 돌려주는 역할 REST API- Representational State Transfer- 웹의 장점을 최대한 활용하는 API- 자원을 이름으로 구분해 자원의 상태를 주고받는 API 방식-  URL 설계 방식 -  주소와 메서드만 보고 요청의 내용을 파악할 수 있다.  1) 특징 - 서버/클라이언트 구조, 무상태, 캐시 처리 기능, 계층화, 인터페이스 일관성  2) REST API를 사용하는 방법  규칙 1. URL에는 동사를 쓰지말고, 자원을 표시해야 한다.   자원 = 가져오는 데이터 예문적합성설명/articles/1적합동사 없음, 1번 글을 가져..
[스프링 부트 3 백엔드 개발자 되기] ch 5. 데이터베이스 조작이 편해지는 ORM 1. 데이터베이스란? - 데이터베이스를 관리하기 위한 소프트웨어를 DBMS(database management system)라고 한다. - DBMS는 관리 특징에 따라서 관계형, 객체-관계형, 도큐먼트형, 비관계형 등으로 구분한다.  관계형 DBMS - relational DBMS를 줄여서 REBMS라고 부른다. 테이블 형태로 이루어진 데이터 저장소 H2, MySQL - 개발 및 테스트시에는 H2, 실제 서비스를 올릴 때는 MySQL를 사용 - H2는 자바로 작성되어 있는 RDBMS이다. 스프링 부트가 지원하는 인메모리 관계형 데이터베이스이다. 데이터를 다른 공간에 따로 보관하는 것이 아니라 애플리케이션 자체 내부에 데이터를 저장하는 특징이 있다.  SQL문으로 데이터베이스 조작  ● 데이터 조회SELE..