온라인 강의 13

섹션 4. 쿠버네티스 무게감 있게 설치하기

쿠버네티스를 너무 쉽게 설치하기 보다 무게감 있게 설치하면 향후, 쉽게 설치한 사람보다 더 빠르고 쉽게 설치할 수 있다. Sprint 1. 부커네티스 제대로 설치하기   => 인프라 환경 설치Sprint 2. 쿠버네티스 누구나 배포하기  =>  CI/CD 환경Sprint 3. 쿠버네티스 실무에 적용하기  => 개발 환경01.전체 환경 순서개발GitHubJenkins깃허브 소스 다운프로젝트 빌드 툴(Gradle, maven 등)로 Jar 생성dockerhub 에서 OpenJDK 이미지를 다운 MyApp 이미지 생성다시, dockerhub에 이미지 업로드jenkins는 Pod 생성 명령을 Kubernates 전달Kubernates는 docker hub 에서 이미지를 다운로드Kubernates는 컨테이너를 생..

섹션3. 컨테이너 한방 정리

해당 강의를 구매해서 듣는 결정적인 이유는 "책을 읽으면서 공부하기에는 이해가 잘 안되었다..."3장 쿠버네티스, 4장 도커, 5장 젠킨스 쯤 읽을 때... 안되겠다 싶어 강의를 구매했다. 공부 속도가 더욱 늦어지겠지만, 강의를 들으면서 책도 읽도록 하겠다.강사님께서도 자료를 바탕으로 자신의 스타일에 맞게 정리를 하면 된다고 했기 때문에 열심히 정리를 해본다..!! 01. 리눅스 흐름으로 이해하는 컨테이너 Container와 Container Orchestration 차이 기술의 흐름Container Orchestrationkubernates / docker swarm / Nomad / MESOS→ (기업관리형) OPENSHIFT / RANCHER / VMware Tanzu  (기업 서버에서 프라이빗 하..

[섹션2] 컬렉션 프레임워크 - ArrayList

배열과 인덱스배열의 특징배열에서 자료를 찾을 때 인덱스(index)를 사용하면 매우 빠르게 자료를 찾을 수 있다.인덱스를 통한 입력, 변경, 조회의 경우 한 번의 계산으로 자료 위치를 찾을 수 있다. 간단 정리 int는 4byte를 차지한다.배열의 시작 참조 + (자료의 크기 * 인덱스 위치)arr[1]: x100 + (4byte * 0)arr[2]: x100 + (4byte * 1) 배열의 검색배열에 들어 있는 데이터를 검색할 때는 하나씩 비교를 해야한다.배열 안에 있는 데이터를 하나씩 확인해야 하기 때문에 배열의 크기가 클 수록 시간이 오래걸린다.배열의 순차 검색은 배열에 들어있는 데이터의 크기 만큼 연산이 필요하다. 빅오(O) 표기법알고리즘의 정확한 실행 시간이 아니라, 데이터 양의 증가에 따른 성..

[섹션1] 제네릭 2편

1. 타입 매개변수 제한 클래스에 명확한 타입을 정해 놓고 작성한다.코드 재사용 X코드 안정성 O다형성 시도코드 재사용성 O: 다형성 처리를 통해 클래스를 하나로 처리할 수 있다.코드 안전성 X: 원하는 타입을 반환하기 위해서는 다운 캐스팅을 해야한다.제네릭 도입과 실패제네릭 타입을 선언하면 자바 컴파일러 입장에서는 T에 어떤 타입이 들어오는지 알 수 없다.=> T는 어떤 타입이든 받을 수 있는 모든 객체의 최종 부모인 Object 타입으로 가정한다.제네릭에서 타입 매개변수를 사용하면 어떤 타입이든 들어올 수 있다.=> 매개변수 타입을 제한 해야한다.타입 매개변수 제한public class AnimalHospitalT extends Animal>코드 재사용성 O코드 안전성 O: 타입 매개변수 상한(ext..

[섹션1] 제네릭 1편

Q. 클래스에서 Integer, boolean, String 등 여러 타입을 한 번에 처리를 어떻게 할까?  1. 여러 타입 처리 방법1) 각 타입을 처리하는 클래스 만들기장점컴파일로 정확하게 타입을 알려준다.(타입 안전성O)단점각 타입마다 클래스를 만들어야 한다.(코드 재사용X)// Integer 담당 클래스IntegerBox integerBox = new IntegerBox();integerBox.set(10);Integer integer = integerBox.get();System.out.println("integer = " + integer);// String 담당 클래스StringBox stringBox = new StringBox();stringBox.set("hello");String st..

[강의] 스프링 MVC 2편 - 예외 처리와 오류 페이지(섹션8)

1. 서블릿 예외 처리두 가지 방식으로 예외 처리를 지원한다.Exceptionresponse.sendError(HTTP  상태 코드, 오류 메세지) 1) Exception(예외)자바 직접 실행자바의 메인 메서드를 직접 실행하는 main 이라는 쓰레드가 실행된다.실행 도중에 예외를 잡지 못하고 처음 실행한 main 메서드로 넘어가면 예외를 던지고, 쓰레드는 종료된다. 웹 애플리케이션웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다.예외가 발생했을 때, try ~ catch로 처리하면 아무런 문제가 없다.만약, 예외를 잡지 못하고 서블릿 밖으로 전달되면 어떻게 될까?WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외발생)  @Slf4jpubli..

[강의] 스프링 MVC 2편 - 필터, 인터셉터(섹션7)

1. 서블릿 필터공통 관심 사항요구사항을 보면 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다.문제는 로그인 하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어올 수 있다. 공통 관심사는 AOP로 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 1) 서블릿 필터 소개필터는 서블릿이 지원하는 수문장이다. 필터 흐름HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러 필터 제한HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러  // 로그인 사용자HTTP 요청 →  WAS →  필터(적절하지 않은 요청이라 판단, 서블릿 호출 X) // 비 로그인 사용자 필터 인터페이스init(): 필터 초기화 메소드, 서블릿 ..

[스프링 MVC 1편] 웹 페이지 만들기

현재 문제점 정확한 에러의 이유는 모르겠지만, 타임리프의 templates/basic 경로를 handler에서 못 잡고 있다.로깅 메세지가 info이면 에러가 안 보여서 시간을 많이 낭비했다...(보여야 되는거 아닌가..ㅠㅠ)이 부분을 해결해야 강의를 계속 들을 수 있을 것 같다....요구사항 분석상품을 관리할 수 있는 서비스 만들기 상품 도메인 모델상품 ID상품명가격수량상품 관리 기능상품 목록상품 상세상품 등록상품 수정상품 도메인 개발  상품 객체package hello.itemservice.domain.item;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class Item { private Long id; private..

[스프링 MVC 1편] 구조 이해

DispatcherServlet 구조 살펴보기스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다.프론트 컨트롤러가 바로 디스패처 서블릿(DispatcherServlet)이다.디스패처 서블릿이 스프링 MVC의 핵심 DispacherServlet 서블릿 등록DispacherServlet도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다.DispacherServlet → FramewokrServlet → HttpServletBean → HttpServlet스프링 부트는 DispacherServlet 을 서블릿으로 동작하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다.참고: 더 자세한 경로가 우선순위가 높다. 요청 흐름서블릿이 호출되면 HttpServlet..

[스프링 MVC 1편] MVC 프레임워크 만들기

정리f else도 좋지만, 다형성으로 작성해보는 것도 좋다.프론트 컨트롤러 패턴FrontController 패턴 특징프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출입구를 하나로공통 처리기능프론트 컨트롤러를 제외한 나머지는 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC와 프론트 컨트롤러스프링 웹 MVC의 핵심도 바로 FrontController스프링 웹 MVC의 ✨DispatcherServlet이 FrontController 패턴으로 구현되어 있음프론트 컨트롤러 도입구조를 개선할 때는 구조만 개선해야한다?? => 참아 참으라구개선할 때는 같은 레벨의 코드만 개선한다. @WebServlet(name = "frontControllerServ..