전체 글 44

디자인 패턴이란

디자인 패턴: 자주 사용하는 설계 패턴을 정형화해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 Gof디자인 패턴 소프트웨어를 설계 할 때는 기존에 경험이 매우 중요하다. 그러나 모든 사람들이 다양한 경험을 가지고 있을 수 는 없다. 이러한 지식을 공유하기 위해서 나온것이 GOF(Gang of Four)의 디자인 패턴이다. 객체지향 개념에 따른 설계 중 재사용할 경우 유용한 설계를 디자인 패턴으로 정리했다. 총 23가지의 패턴을 3가지 유형으로 분류하고있다. 디자인 패턴의 장점 개발자간의 원활한 소통 소프트웨어 구조 파악 용이 컴포넌트 재사용을 통한 개발 시간 단축 설계 변경 요청에 대한 유연한 대처가능 디자인 패턴의 단점 객체지향적인 설계/구현 (사고를 객체지향적으로 해야함) ..

쿠버네티스란 무엇인가

쿠버네티스란 무엇인가? 쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합체이다. 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다. 쿠버네티스란 명칭은 키잡이(helmsman)나 파일럿을 뜻하는 그리스어에서 유래했다. K8s라는 표기는 "K"와 "s"와 그 사이에 있는 8글자를 나타내는 약식 표기이다. 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화했다. 쿠버네티스에서 사용하는 기본 용어들이 있습니다. 마스터(Maste..

쿠버네티스 2022.06.13

무중단 배포 방법 3가지

블루/그린 방식 블루를 구버전, 그린을 신버전으로 지칭하여 붙여진 이름으로 운영 환경에 구버전과 동일한 신버전의 인스턴스를 구성한 후, 로드 밸런서를 통해 신버전으로 모든 트래픽을 전환하는 방식이다. 배포가 완료된 후에는 남아 있는 기존 버전의 환경의 다음 배포에 재사용할 수 있는 장점이 있습니다. 다만 시스템 자원이 두배로 필요하며 새로운 환경에 대한 테스트가 전제되어야 한다. 롤링 업데이트 새버전을 배포하면서, 새 버전 인스턴스를 하나씩 늘려가고 기존 버전의 인스턴스를 하나씩 줄여나가는 방식으로써 이전 버전과 새 버전의 인스턴스가 동시에 존재할 수 있다는 단점이 있지만, 시스템을 무중단으로 업데이트 할 수 있다는 장점이 있다. 카나리 배포(Canary Deployment) 옛날 광부들이 유독 가스에 ..

BeanFactory와 ApplcaitonContext

BeanFactory 와 ApplicationContext IoC 컨테이너라고 하는 스프링 컨테이너는 DI의 관점에서는 BeanFactory라고도 하고, ApplicationContext라고도 합니다. BeanFactory는 기본적인 bean의 getBean()(조회기능)을 제공하는 최상위 인터페이스입니다.ApplicationContext는 BeanFactory를 상속받아 부가적인 기능을 추가한 인터페이스입니다. 일반적으로 스프링의 IoC 컨테이너는 애플리케이션 컨텍스트를 말하게 됩니다. BeanFactory - Lazy loading ApplicationContext - Eager loading 또한 둘의 차이점으로써 BeanFactory는 on-demand방식으로 빈을 사용시에만 로딩시켜줍니다. 반면..

스프링/기본 2022.05.31

좋은 객체 지향 설계(SOLID)

인터페이스를 안정적으로 설계하기 객체지향의 꽃은 다형성이다. -> 스프링은 다형성을 극대화해서 이용할 수 있게 도와준다 스프링에서 이야기하는 제어의 역전(IoC), 의존 관계주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 좋은 객체 지향 설계의 5가지 원칙 SOLID 클린코드의 저자 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리하였다. 1. SRP 단일 책임 원칙(Single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이란 말이 애매모호 하기 때문에 변경이 만약 있을 때 파급효과가 적을수록 단일 책임 원칙을 잘 따랐다고 생각할 수 있다. ex) UI, 객체의 생성과 사용을 분리 2. OCP 개방-폐쇄의 원..

스프링/기본 2022.05.25

[TIL] DAY-16~17 제네릭과 컬렉션

제네릭(Generic)이란 변수를 선언할 때 모든 변수에는 자료형이 있습니다. 대부분 하나의 자료형으로 구현되지만, 필요에 따라 여러 자료형으로 만들 수 있다면 훨씬 유연하게 사용할 수 있습니다. 이와 같이 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍 하는것을 '제네릭(Generic) 프로그래밍이라고 합니다. 출처: 박은종 - 「Do it 자바 프로그래밍 입문」, 이지스 퍼블리싱 제네릭의 필요성 public class Cup{ private Americano coffee; public void setCoffee(Americano coffee){ this.coffee = coffee; } public Americano getCoffee() { return c..

[스프링 클라우드] Ch03. API 게이트웨이

API 게이트 웨이란 API 게이트웨이는 실제 백엔드 서비스 또는 데이터와 접속하고 API 호출에 대한 정책, 인증 및 일반 액세스 제어를 적용하여 중요한 데이터를 보호하는 트래픽 관리자입니다. API 게이트웨이는 서비스의 확장성과 고가용성을 보장합니다. 요청을 적절한 서비스로 라우팅하고 요청자에게 응답을 다시 보내는 기능을 담당합니다. API 게이트웨이는 데이터와 API 간의 보안 연결을 유지하고 회사 내부 및 외부에서 로드 밸런싱을 포함한 API 트래픽 및 요청을 관리합니다. 게이트웨이는 중요한 데이터를 보호하기 위해 API 호출에 대한 정책, 인증 및 일반 액세스 제어를 적용합니다. API 게이트웨이는 클라이언트의 모든 API 호출을 가져와 요청 라우팅, 구성 및 프로토콜 변환을 사용하여 올바른 마..

스프링/cloud 2022.05.15

[스프링 클라우드] ch02 스프링 클라우드 소개

The Twelve-Factor App 서론 코드를 '클라우드 네이티브'로 만든다는 것은 12-factor의 configuration, statelessness, logging, and connecting to backing services 등을 다루는것을 의미합니다. 소개 현대 시대에 소프트웨어는 일반적으로 웹 앱 또는 SaaS(Software-as-a-Service)로써 제공 됩니다. Twelve-Factor App은 다음과 같은 SaaS앱을 구축하기 위한 방법론입니다. 설정 자동화에 선언적 형식을 사용 하여 프로젝트에 참여하는 신규 개발자의 시간과 비용을 최소화합니다. 실행 환경 간의 최대 이식성 을 제공 하는 기본 운영 체제와 깨끗한 계약 을 맺습니다. 서버 및 시스템 관리가 필요 ..

스프링/cloud 2022.05.13

[스프링클라우드] ch01. 웹 서비스 확장 전략

웹 서비스 확장 전략 한 서버의 성능을 높이는 스케일업 작업은 한계가 있기때문에 분산 처리를 위해 여러 대의 서버들을 놓게 되는 스케일아웃(Scale-out) 작업을 하게 되는데,이 때 서버들로 대규모의 네트워크 트래픽 분산 처리하는 기술을 로드밸런싱(Load Balancing)이라고 합니다. 스케일업을 통한 확장 ‘스케일 업’은 서버에 CPU나 RAM 등을 추가하거나 고성능의 부품, 서버로 교환하는 방법을 의미합니다. 예를 들어, ‘1’의 처리 능력을 가진 서버 한 대를 ‘5’의 처리 능력을 가진 서버로 업그레이드시키는 것입니다. CPU나 RAM을 추가하기로 했다면 현재 서버에 추가 부품을 장착할 수 있는 여유 슬롯이 있어야 하며, 그렇지 않은 경우 서버 자체를 고성능으로 교체하는 것이 필요합니다. 스..

스프링/cloud 2022.05.12

[TIL] DAY-8~10 자바와 3대 핵심 기술 패키지

1. 자바란 2. 자바의 3대 핵심 기술 패키지 : JDK,JRE,JVM 3. 페어실습과 3일간 회고 자바란 썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어. 창시자는 제임스 고슬링이다. 2010년에 오라클이 썬 마이크로시스템즈를 인수하면서 Java의 저작권을 소유하였다. 자바의 장점 운영체제에 독립적이다. Q) 그렇다면 왜 운영체제마다 다르게 다운로드해야하는가? A) 자바 프로그램과는 달리 자바 가상 머신(JVM)은 운영체제에 종속적이므로, 각 운영체제에 맞는 자바 가상 머신을 설치해야 한다. 객체 지향 언어(Object Oriented Programming, OOP) 추상화(abstraction) : 객체들의 공통 특징을 도출하는 것 캡슐화(encapsuplation) : 객체가..