본문 바로가기

SpringBoot

(30)
[이것이 백엔드 개발이다] ch 6. 백엔드 개발에 필요한 최소한의 HTML 1. 웹 브라우저와 서버의 상호작용 1) 웹 브라우저가 서버와 상호작용하는 방법 ○ URL을 통한 접속 - 사용자는 주로 웹 브라우저에서 직접 URL을 입력하여 웹 페이지를 방문하거나 a 태그가 걸려 있는 링크를 통해 접근 - URL을 통한 접속 요청은 GET ○ form 태그를 사용하여 form 제출 - form 태그는 'GET'과 'POST'라는 방식을 모두 사용할 수 있으며, 주로 'POST'를 사용 ○ XHR을 사용한 AJAX 요청 - 특정 유튜브 채널의 동영상 첫 목록에는 해당 채널의 영상 중 일부가 표시 - 이 상태에서 스크롤을 아래로 내리면 로딩이 되면서 다음 동영상들이 목록에 추가 - 화면을 새로고침하지 않으면서 서버에 다음 동영상 목록에 대한 정보를 요청하..
[이것이 백엔드 개발이다] ch 5. API 호출 클라이언트 페이지 만들기 1. 스프링 부트 애플리케이션 실행하기 1) 스프링 프레임워크와 스프링 부트 - 객체지향 프로그래밍 관련 지식 필요 ○ 의존성 주입(DI, Dependency Injection) ○ 제어의 역전(IOC, Inversion Of Control) ○ 관점지향 프로그래밍(AOP, Aspect-Oriented Programming) - 스프링 프레임워크는 별도의 WAS를 서버에 설치해야 배포할 수 있는 반면, 스프링 부트는 WAS를 내장하고 있어 쉽게 배포 가능 2) 스프링 이니셜라이저 - 스프링 부트 애플리케이션을 만들기 위해서는 먼저 스프링 부트 프로젝트를 생성해야 함 - 프로젝트란 통합개발환경에서 애플리케이션을 다루는 단위 - 일반적으로 하나의 프로젝트에 하나의 애플리케이션이 포함되며..
[이것이 백엔드 개발이다] ch 4. 서버와 클라이언트 1. 서버와 클라이언트의 개념 1) 네트워크에서의 서버와 클라이언트 - 서비스를 제공하는 쪽이 서버(server), 서비스를 제공받는 쪽이 클라이언트(client) - 물리적인 장치 간에 서로 통신이 이루어지기 위해서는 통신을 시작하는 쪽이 상대방의 네트워크 주소인 IP 주소를 알고 있어야 함 ○ 로드 밸런싱 - 서버에 가해지는 부하(Load)를 분산하는 것 - 사용자들의 트래픽을 여러 서버가 나눠 받도록 구성하며, 네트워크 장비인 스위치(Switch)를 할당해 로드 밸런싱 ○ 캐시 - 비용이 큰 작업의 결과를 어딘가에 저장하여 비용이 작은 작업으로 동일한 효과를 내는 것 2) 애플리케이션에서의 서버와 클라이언트 - 네트워크로 연결된 두 장치에서는 각자의 역할에 따라 실제 유의미한 트래픽을 주고..
[이것이 백엔드 개발이다] ch 3. 실무에 가장 많이 쓰이는 자바 문법 1. 다형성 : 상속과 인터페이스 - 하나의 객체가 내부적으로 여러 타입을 가질 수 있고, 어떤 타입이 들어 있느냐에 따라 각기 다른 동작을 하는 성질 public interface Car{}public class Sonata implements Car {}public class K5 implements Car {}public class Main { public static void main(String[] args) { Car car1 = new Sonata(); Car car2 = new K5(); }}- 자동차 (Car)라는 인터페이스를 정의 - 자동차 인터페이스를 구현하는 Sonata라는 클래스, K5 클래스 정의 - 인터페이스인 Car 타입의 참조 변수에 자동차 인터페이스의 구현체인 ..
[스프링 부트 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)..