전체 글 85

06. 컴포넌트 스캔

컴포넌트 스캔과 의존관계 자동 주입 시작하기 지금까지 우리가 빈을 등록할 때는 @Bean을 계속 써내려갔다. 만약 할게 많으면 수백개를 해야될 수도 있다. 스프링에서는 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 의존관계도 자동으로 주입하는 @Autowired라는 기능 또한 제공한다. AutoAppConfig를 새로 만들자. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; im..

Back-end 2023.10.31

05. 싱글톤 컨테이너

웹 애플리케이션과 싱글톤 이전 시간에 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성했다. 만약, 고객 트래픽이 초당 100이면 초당 100개의 객체가 생성되어야 한다. 이는 메모리 낭비가 매우 심하다. 따라서 객체는 딱 1개만 생성되고 이를 모두가 공유하도록 설계하여야 한다. 이게 싱글톤 패턴이다. 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성. private 생성자를 사용하여 누군가가 임의로 new를 사용하는 것을 막는다. public class SingletonService { private static final SingletonService instance = new SingletonService(); public static Singlet..

Back-end 2023.10.31

04. 스프링 컨테이너와 스프링 빈

스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);ApplicationContext 를 스프링 컨테이너라 한다.ApplicationContext 는 인터페이스이다.스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext 로 구분해서 이야기 한다는데, 이는 다음에 알아본다고 한다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생..

Back-end 2023.10.07

03. 스프링 핵심 원리 이해 - 객체 지향 원리 적용

1. 새로운 할인 정책 개발 원래는 고정 할인 정책으로 VIP가 10000원을 주문하든 20000원을 주문하든 1000원만 할인해주었다. 이제 정률 할인 정책으로 바꿔 낸 돈의 10%가 할인되도록 바꿔보자. 의존관계 RateDiscountPolicy package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; //10% 할인 @Override public int discount(Member member, int price) { if (..

Back-end 2023.10.07

02. 스프링 핵심 이해 - 예제 만들기(1)

비즈니스 요구사항 및 설계 회원 도메인 회원을 가입하고 조회할 수 있다. 회원은 일반 회원과 VIP 두 등급이 있다. 회원 데이터 자체는 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. 클라이언트-> 회원서비스 호출 회원 서비스와 별개로 회원저장소를 만들고(인터페이스) 메모리 회원저장소, DB 회원저장소, 외부 시스템 연동 회원 저장소 계층을 만들어 나눔. MemberService 인터페이스를 만들고 MemberServiceImpl 구현체를 만듦(구현체가 하나면 뒤에 Impl을 붙임) 옆도 동일. 1. 회원 등급 package hello.core.member; public enum Grade { BASIC, VIP } 2. 회원 정보 package hello.core.member; public ..

Back-end 2023.10.03

01. 객체 지향 설계와 스프링

스프링부트 스프링을 편리하게 사용할 수 있도록 지원하는 웹 프레임워크, 스프링 프레임워크를 도와주는 역할 / 단독으로 사용하기는 힘듦. 스프링 자바 기반이며 좋은 객체지향 어플리케이션 개발을 도와주는 프레임워크 객채 지향 프로그래밍이란? 컴퓨터 프로그램을 객채들의 모임으로 파악 프로그램이 유연하며 변경에 용이해 대규모 소프트웨어 개발에 강점. 객채 지향 특징 다형성 역할과 구현으로 세상을 구분 자동차가 바뀌어도 운전자는 운전이 가능하다. 즉, 자동차가 바뀌어도 운전자한테 영향 X 운전자를 클라이언트라 할때, 클라이언트는 자동차의 내부 구조를 몰라도 된다 기존 자동차가 변해도, 완전히 새로운 자동차가 나와도 클라이언트는 운전이 가능하다 -> 클라이언트는 대상 역할의 인터페이스만 알면되며, 내부 구조가 변경..

Back-end 2023.10.02

[클라우드 인프라 아키텍처] 4주차 2. Azure 네트워크 서비스 시연

가상 네트워크 가상 네트워크를 만들 때 CIDR 표기법으로 10.0.0.0/16이라 되어있는데, 이는 사용자가 설정하는 것이다. 이를 바꿔줄 수 있다. 10.0.0.0/16으로 만들었을 때는 65536개의 주소를 사용할수 있다고 되어있고, 이는 서브넷을 추가하여 만들 수 있는 것이다. 서브넷을 추가할 때 10.0.0.0/24로 하여 보면 예약된 주소 251+5라고 되어있는데, 5개의 주소는 Azure에서 사용하므로 사용하지 못하는 것을 의미하는 것이다. 0 ~ 3번, 255번이 해당 번호이다. 일단 Web 서브넷과 DB서브넷을 만들어 놓고 보안으로 넘어가보자. BastionHost는 VM을 원격으로 접속할 때 보다 안전하게 접속할 수 있도록 도와주는 것이다. DDos Protection은 표준이라고 되어..

[클라우드 인프라 아키텍처] 4주차 1. Azure 네크워크 서비스

솔루션을 구성할 때 한개의 리전이 아닌 다수의 리전에 구성을 하여 평상시에는 주지역으로 전송시키고 장애가 발생하였을 때는 보조지역이 있는 곳으로 전송하여 문제를 막을 수 있다. 혹은, 예를들어 미국과 한국 두 개의 리전에 구성하였을 때 미국 사람들은 미국으로, 한국 사람들은 한국으로 접속시키게 하면 훨씬 빠른 서비스를 제공할 수 있다. 오른쪽을 보면 가상 네트워크 피어링이라는 것이 있는데, 이는 인터넷을 통하여 외부 통신하는 것이 아니라 에저 백본네트워크를 통해 내부 사설망으 서로 연결할 수 있는 서비스를 말하는 것이다. 즉 외부에서 웹으로 접속할 때는 인터넷으로, 주지역의 VM과 보조지역의 VM끼리 통신할 때는 내부 사설 아이망 통신인 가상 네트워크 피어링으로 통신을 할 수 있도록 구성할 수 있는 것이..

[클라우드 인프라 아키텍처] 3주차 2. Azure 스케일 업/다운, 스케일 인/아웃, VMSS, 컨테이너 실습

스케일 업/다운 먼저 가상머신에 연결해 보자. 이전에 했던 가상머신 접속과 동일한 절차로 진행이 된다. 윈도우이니 RDP연결->다운로드->아이디/비밀번호의 절차로 접속을 해주면 된다. 이때 가상머신 상에서 Server Manager에 들어가면 우리가 처음에 설정했던 값 그대로 CPU는 2코어에 8GB램이 설정되어 있는 모습을 볼 수 있다. 이것을 바꿔보자 가상머신에서 크기로 들어가면 CPU, RAM, 데이터 디스크 등등의 모습이 보이는데 여기서 우리는 2코어 8GB에서 4코어 16GB로 바꿔줄 것이다. 이를 선택하고 크기 조정을 눌러주면 된다. 이렇게 하면 가상머신이 재부팅이 된다. 여기서 봤을 때 크기를 살펴보면 4코어에 16GB램으로 바뀐 것을 알 수 있다. 물론 이렇게 되면 비용은 이전보다 많이 든..

[클라우드 인프라 아키텍처]3주차 1. Azure 컴퓨팅 서비스

Azure에서 제공하는 Azure Compute 서비스에는 위와 같이 다양한 것들이 있다. IaaS뿐만 아니라 PaaS에서 사용할 수 있는 컴퓨팅 서비스들을 알아보도록 하자. VM 먼저 가상 머신이다.Azure에서는 윈도우 뿐만 아니라 리눅스의 거의 모든 버전을 제공해 준다. 이전에 보았던 가상머신을 생각해보면 윈도우는 RDP(3889), 리눅스는 SSH로 연결해주면 가상머신이 바로 사용가능하였다. 스케일 업/다운은 하나의 VM의 CPU, 메모리 등의 성능을 늘리거나 낮추는 것이다. 보통 클라우드에서는 스케일 업/다운 보다는 스케일 아웃/인을 많이 사용하는데 이는 VM의 개수를 늘리거나 줄여 성능의 변화를 나타내는 것이다. 이렇게 하면 하나의 VM이 이상해도 나머지가 정상이면 문제없이 돌아가는 것을 볼 ..