Total
[Jasypt] Spring Boot yaml 파일 암호화
Jasypt Java Simplified Encryption의 약자로, 자바로 간단히 암호화할 수 있게 도와주는 라이브러리 파일트리 ├ src │ └─ main │ │ ├─ JasyptConfig.kt │ │ └─ KotlinStudyApplication.kt │ └─ resources │ ├─ application.yml │ └─ jasypt-encryptor-password.txt └─ .gitignore 1. build.gradle에 jasypt-spring-boot-starter 추가 dependencies { implementation ("com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3") ... 생략 } 2. yaml 파일에 Jasypt ..
[Mac OS / Java] 맥 JDK 자바 버전 변경
현재 jdk 버전 확인 java -version 설치된 모든 jdk 버전들 확인 /usr/libexec/java_home -V 사용하는 shell 확인 echo $SHELL bash 혹은 zsh vi 를 통해 환경변수 수정 vi ~/.bash_profile #bash vi ~/.zshrc # zsh 사용하는 shell에 따라 파일 열기 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0) export JAVA_HOME=$(/usr/libexec/java_home -v 11) export JAVA_HOME=$(/usr/libexec/java_home -v 17) 변경하려는 버전 입력 i 키를 입력해 수정 :wq! 를 입력해 저장 후 편집기 닫기 source ~/.zs..
GCP Kubernetes GKE Pod 레플리카셋, Deployment
2023.10.14 - [Cloud&DevOps/Kubernetes] - GCP Kubernetes GKE Pod 배포 (nginx) GCP Kubernetes GKE Pod 배포 (nginx) 2023.10.10 - [Cloud&DevOps/GCP] - GCP GKE 클러스터 생성 | 구글 클라우드 플랫폼, 쿠버네티스 GCP GKE 클러스터 생성 | 구글 클라우드 플랫폼, 쿠버네티스 https://cloud.google.com https://cloud.google.com 영상 통화, 이 karla.tistory.com 다수의 파드 배포 레플리카셋으로 파드 수 관리 쿠버네티스에서는 다수의 파드를 만드는 레플리카셋 오브젝트를 제공한다. 파드를 3개 만들겠다고 레플리카셋에 선언하면 컨트롤러 매니저와 스케줄러..
GCP Kubernetes GKE Pod 생성, 배포, 접속
2023.10.10 - [Cloud&DevOps/GCP] - GCP GKE 클러스터 생성 | 구글 클라우드 플랫폼, 쿠버네티스 GCP GKE 클러스터 생성 | 구글 클라우드 플랫폼, 쿠버네티스 https://cloud.google.com https://cloud.google.com 영상 통화, 이메일, 채팅, 문서 공동작업을 한곳에 통합할 수 있습니다. cloud.google.com https://console.cloud.google.com Google 클라우드 플랫폼 로그인 Google 클라우드 karla.tistory.com 1. pod 생성 Pod란? 쿠버네티스 애플리케이션의 기본 실행 단위이다. 각 파드는 클러스터에서 실행중인 워크로드(쿠버네티스에서 구동되는 애플리케이션)의 일부를 나타낸다. Ku..
GCP GKE 클러스터 생성 | 구글 클라우드 플랫폼, 쿠버네티스
https://cloud.google.com https://cloud.google.com 영상 통화, 이메일, 채팅, 문서 공동작업을 한곳에 통합할 수 있습니다. cloud.google.com https://console.cloud.google.com Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 1. 새 프로젝트 생성 2. 쿠버네티스 엔진 API 활성화 2. 쿠버네티스 클러스터 만들기 3. 클러스터 생성이 완료되고 3개의 노드가 생성된 것을 확인할 수 있다. 4. 접속 1) 클러스터 연결 2) CLOUD SHELL 3) gcloud CLI https://cloud.google.com/sdk/docs/install gcloud CLI 설치 |..
마이크로서비스 분산 트랜잭션 관리, 보상 트랜잭션, MSA Transaction | Two Phase Commit, Saga Pattern
2PC (Two Phase Commit) 분산 시스템에서 트랜잭션을 변경할 수 있는 기능을 제공하는 방식 Transaction Coordinator가 각 서비스의 Commit. Rollback 을 제어하는 형태로 트랜잭션을 관리함 2PC는 서비스가 증가할수록 시스템의 대기 시간이 길어지며, 이는 응답시간의 증가를 초래함 Lock을 잡아야 하는 Row의 범위가 크거나 트랜잭션 기간이 긴 경우 시스템에 엄청난 대기시간을 발생하므로 수명이 매우 짧은 작업에만 사용하는 것을 권장 마이크로서비스 전체에서 상태 변경을 조정하기 위해 2PC와 같은 분산 트랜잭션을 사용하지 않는 것이 좋음 2PC는 결국 Coordinator를 기반으로 강력한 결합을 유도하고, 데이터에 직접적인 Lock을 잡고 처리하기 때문에 서비스간..
멀티 스레드 환경, 동시성 이슈, 해결방법 | 스레드 안전성 (Thread-safe)
동시성 이슈멀티스레드 방식은 한 코어에서 여러 스레드를 이용해서 번갈아 작업을 처리하는 방식공유하는 영역이 많아 프로세스방식보다 context switcing 오버헤드가 작아, 메모리 리소스가 상대적으로 적다는 장점멀티스레드 프로세스의 경우 여러 스레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 줌여러 스레드가 동시에 하나의 자원을 공유하고 있기 때문에 같은 자원을 두고 경쟁상태(raceCondition) 같은 문제가 발생2023.05.11 - [CS/OS] - [Process & Thread] 스레드, 멀티 스레드 [Process & Thread] 스레드, 멀티 스레드1. 스레드 1) 스레드 하나의 프로세스 내에서 실행되는 동작의 단위 각 스레드는 프로세스의 스택 메모리..
Spring AOP, 관점 지향 프로그래밍
AOP Aspect-Oriented Programming 관점지향 프로그래밍은 객체지향 프로그래밍을 보완하기 위해 쓰임 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화하여 재사용할 수 있도록 지원하는 것 보통 비즈니스 웹 애플리케이션이라면 사업에 핵심적인 핵심 비즈니스 로직 횡단 관심사(cross-cutting concerns): 애플리케이션 전체를 관통하는 부가 기능 로직 (로깅, 보안, 트랜젝션) 관점 == 관심사( 개발에 필요한 고민이나 염두에 두어야 하는 일) - 파라미터가 올바르게 들어왔을까? - 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? - 이 작업에 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 핵심 로직은 아니지만, 코드를 온전하..
@Component, @Bean 어노테이션
@Component 클래스를 Spring에서 알아서 관리해주는 자바 빈으로 표시하는 데 사용 Spring이 자동으로 클래스의 인스턴스를 생성하고 종속성을 포함하여 각종 lifecycle 관리 @Component public class MyComponent { // ... } @Autowired ApplicationContext에 종속성을 주입 Spring에서 필요한 종속성의 인스턴스를 자동으로 주입 @Component public class MyComponent { private MyService myService; @Autowired public MyComponent(MyService myService) { this.myService = myService; } // ... } @Service, @Con..
Spring 제어의 역전(Ioc) ,의존성 주입 (DI), ApplicationContext
IOC (Inversion of Control)제어의 역전이라는 의미애플리케이션 흐름의 주도권을 Spring이 갖는다라는 것객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 함가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 함 IOC 컨테이너는 객체의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 객체의 생명주기를 관리 DI(Dependency Injection)의존성하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것A 객체가 B 객체 없이 동작 불가능한 상황을 'A가 B에 의존적이다'라고 표현 public class Store { private Pencil pencil; public Store() { this.pen..