Tools 42

Kubernetes Services

- 서비스 애플리케이션의 다양한 구성요소에서의 통신을 위해 사용함 내부의 모든 파드들 간의 연결뿐만 아니라 클러스터 외부와의 연결도 담당함 1. NodePort 쿠버네티스 노드의 ip (192.168.1.2)이고 노드 내부의 파드의 ip는 10.244.0.2인상태에서 외부(192.169.1.10)가 파드에 접속하는 방법 파드의 80 포트(targetPort)를 서비스(10.106.1.12)의 80(port)으로 연결하고 해당 서비스를 노드의 특정포트(nodePort, 30000~32767)에 연결하여 사용함 apiVersion : v1 kind : Servcie metatdata : name: myapp-service spec: type: NodePort ports: - targetPort:80 port..

Tools/K8S 2023.03.19

Kubernetes Core concept

1. etcd (자세한 설명 : https://tech.kakao.com/2021/12/20/kubernetes-etcd/) 쿠버네티스는 Key-Value형태로 데이터 저장 고가용성 Key-Value 자료구조 ETCD control client로 cli를 통해 서버에 대한 정보를 키-밸류 값으로 가져올 수 있음 쿠버네티스가 ETCD를 활용하여 클러스터에 관한 정보를 저장함 (노트,포드,시크릿) 클러스터에서 어떤 정보를 수정 변경할 때마다 etcd에 저장됨 kube -system 조회를 통해 etcd-master를 확인할 수 있음 마스터 노드에서 확인 가능 다중 마스터 클러스터에서는 각 etcd 서버가 서로를 연결하도록 구성 2. kube-api-server kubectl 명령어로 입력하면 kube-api..

Tools/K8S 2023.03.18

Angular my-app 예제로 살펴보는 기본 구조

1 . Angular.json - 기본 프로젝트 프로퍼티 (아이콘 ,이름) 설정 2 package.json - 실행 환경 설정(실행 옵션) 3-1. main.ts import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err)); 시작 지점 , AppModule(app.module.ts에 존재) 실행 3-2. index.html 시작 화, body에서 라는 컴포넌트를 호출함 4-1. app.module...

Tools/ANGULAR 2023.02.26

Kafka 동작 원리

1. Pub - Sub 모델 실제 메세지의 송신과 수신이 분리되어 있으며 카프카 큐에 데이터를 저장하는 Kafka Producer , 이를 읽어오는 Kafka Consumer로 분리 되어 Client API를 제공 2. Zookeeper - 분산 코디네이터 서비스 - Kafka는 Zookeeper를 활용하여 데이터 분산 처리 - 각 서버의 상태와 연결, 환경 ,구성 ,위치 , 정보 등 관리데이터를 저장하기 위해 설계 - 디렉토리와 파일처럼 노드내에 데이터를 가지고 있으며 주키퍼 네임스페이스 노드를 가지고 있음 - 클러스터를 구성하는 서버들끼리 공유되는 데이터를 유지하거나 어떤 연산을 조율하기 위해 사용 - 서버 모니터링 가능 - 각 디렉터리 노드를 Znode라고 하며 , 영구노드와 임시노드,시퀀스 노드로..

Tools/KAFKA 2021.03.02

스프링 AOP 적용 예제

이전글 : 스프링 AOP 기본 동작 원리 : https://chalchichi.tistory.com/41 스프링 AOP 기본 동작 원리 스프링 AOP - OOP를 보완하기 위해 ASPECT를 모듈화 할 수 있는 프로그래밍 기법 구성요소 1. Aspect : 묶어 놓은 모듈 2. Target : 적용이 되는 대상 3. Advice : Aspect 안의 기능 4. Join Point : 적용 시점 5... chalchichi.tistory.com 1. 스프링 AOP 메이븐 의존성을 추가한다. org.springframework.boot spring-boot-starter-aop 2. 어노테이션 기반으로 실행예정이므로 어노테이션을 만들어준다. @Retention(RetentionPolicy.CLASS) @Ta..

Tools/Spring 2021.02.28

스프링 AOP 기본 동작 원리

스프링 AOP - OOP를 보완하기 위해 ASPECT를 모듈화 할 수 있는 프로그래밍 기법 구성요소 1. Aspect : 묶어 놓은 모듈 2. Target : 적용이 되는 대상 3. Advice : Aspect 안의 기능 4. Join Point : 적용 시점 5. Point cut : 적용해야 할 위치 AOP 적용 방식 1) 컴파일 : 컴파일 시 이미 코드 내용대로 조작이된 바이트코드를 만들어냄 2) 로딩 타임 : 컴파일에서는 저굥되지 않고 각 Aspect를 따로 바이트 코드로 가지고 있지만 로드시 설정한 대로 로드 후 생성 3) 런타임 : 스프링 안에서 사용 A라는 클래스 타입의 Bean을 만들 때 A*인 "프록시 빈" 을 생성 후 Aspect를 호출 PROXY 패턴 프록시와 리얼 서브젝트가 공유하는..

Tools/Spring 2021.02.27

Elastic Search High Level Client JAVA API (Search API)

*Elastic Search 공식문서 참조 (https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html) * 현재 구동중인 Elastic Search에는 KOSPI 관련 인덱스(주가, 종목명 , 코드) "Stockinfo2"가 저장되어 있는 상태 1. Client initializing Maven 의존성 추가 org.elasticsearch.client elasticsearch-rest-high-level-client 7.6.2 접속하려는 Elastic search API와 동일한 버젼의 클라이언트를 추가하여야 한다 RestHighLevelClient client; public void init() {..

Tools/ELK 2020.08.16

Component와 Component Scan

Component Scan의 동작원리 스프링 프로젝트의 @SpringBootApplication 어노테이션이 존재하는곳에서 스프링 프로젝트가 시작됨 @SpringBootApplication 내부에는 String[] scanBasePackages() default {} 메서드가 존재하는데 이러한 메서드를 통해 @SpringBootApplication이 존재하는 클래스가 속해 있는 클래스를 basepackage로 설정된다. 이렇게 basepackage로 등록된 package 내부에서 빈으로 등록될 Component들을 검색한다. @Component 어노테이션을 기본으로 각각의 용도에 따라 @Repository, @Service, @Controller ,@Configuration으로 세분화 할 수 있으며 위의..

Tools/Spring 2020.08.09

ApplicationContext-2 (Autowired)

Autowired : 스프링의 의존성 주입 어노테이션 , 등록되어 있는 빈들을 명시된 객체에 주입한다. (생성자, 클래스 필드) 기본적인 사용법 - 1 (클래스 변수 주입) package main; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class repo2{ @Autowired repo1 rp1; public repo2(repo1 rp1) { this.rp1=rp1; } } 클래스 변수에 Autowired를 통한 의존성 주입 방식 기본적인 사용법 - 2 (생성자를 통한 주입) package main; import org..

Tools/Spring 2020.08.06