본문 바로가기

Java

(29)
[Spring] ehCache2와 달라진 ehCache3 사용 ehCache 3 을 Spring Boot 에 적용해보겠다. ehCache 3 버전부터는 JSR-107 cache manager를 구현했다고 한다. 다만, ehCache 2.x 버전과 3.x 버전의 환경설정 포맷 및 사용방법이 조금 달라졌기에 tti, ttl, expiry 등 캐시 유지 기간에 대한 속성을 적용하려면 버전과 환경설정이 일치해야 한다. ⌗ ehCache 3 적용 고려사항 Database Selection Query 대상으로 비지니스 특성상 Hit 확율이 높은지 확인이 필요하다. cache는 기본적으로 Hit 확율이 높을 경우 쓰는 의미가 있다. 만약 Hit 확율이 현저히 떨어지는 경우 적용 하지 않는 편이 성능적으로 더 유리하다. Hit 확율이 높은지, 낮은지에 대해서는 해당 cache의 ..
[Java][Circuit breaker] Hystrix 이해와 사용 방법 서론 MSA 기반을 둔 Application은 클라이언트 회복성이 고려되어야하고, 핵심적인 클라이언트 회복성 패턴은 주로 회로 차단(Circuit breaker), 폴백(fall back), 벌크 헤드(bulk head) 이다. Circuit breaker Pattern은 느리게 실행되고, 성능이 저하된 시스템 호출을 종료해 빨리 실패시키고 자원 고갈을 방지한다. Fall back Pattern은 개발자가 원격 서비스 호출이 실패하거나 호출에 대한 회로 차단기가 실패할때 대체할 코드 경로를 정의할 수있다. Bulk head Pattern은 원격 호출을 서로 격리하고 원격 서비스 호출을 자체 스레드 풀로 분리한다. 즉, 일련의 서비스 호출이 실패할 때 Application container의 모든 자원이 ..
[Java] 스레드 일시정지, Thread sleep /** * 특정 스레드 Loop당 1초 sleep 실행 */ @Slf4j public class mThread implements Runnable{ @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { log.error(e.getMessage()); } // Thread가 실행중인 경우 종료 if (Thread.interrupted()) { Thread.currentThread().interrupt(); } } }
[Java] String 문자열 자르기 : substring() 이용 DB에 저장 데이터 타입이 text로, 저장할 데이터 길이가 정해져있기 때문에 글자 제한에 맞춰 데이터를 잘라서 저장해야 했다. text 타입이 65,535 bytes 이하의 값만 가능해서 일정 글자수 만큼 잘라서 사용하는 방법(substring)을 이용했다. public void setText(TextData textData) { String fullText = textData.getText(); // text 타입이 65,535 bytes 이하의 값만 가능 int max = 65535; int textSize = fullText.length(); int loopCnt = textLength / max + 1; for (int i = 0; i < loopCnt; i++) { int firstIndex ..
[Docker] Jenkins version upgrade ## 실행중인 jenkins 컨테이너 확인 % docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40d2ef954604 jenkinsci/jenkins:2.142-slim "/sbin/tini -- /usr/…" 4 hours ago Up 4 hours 0.0.0.0:8080->8080/tcp, 50000/tcp master 47fdbde9415d jenkinsci/ssh-slave "setup-sshd" 4 hours ago Up 4 hours 22/tcp slave01 ## jenkins container bash 접근 % docker container exec -u 0 -it 40d2ef954604 bash ## jenkins v..
[Docker] 젠킨스 SSH 키 생성 및 master-slave 컨테이너 설정 실제 관리 기능이나 작업 실행 지시등은 마스터(Leader) 인스턴스가 맡고, 작업을 실제로 진행하는 것은 슬레이브(Follower) 인스턴스가 담당한다. 이러한 구성의 컴포즈로 만들어 보겠다 !! :) 1 ) master 젠킨스 컨테이너에 접속할 수 있는 SSH 키 생성 - TERMINAL % docker container exec -it master ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa): Created directory '/var/jenkins_home/.ssh'. Enter passphrase (empty for ..
[Docker] 도커 컴포즈로 여러 컨테이너 실행 및 젠킨스 연동 도커 컨테이너는 = 단일 애플리케이션 도커는 애플리케이션 배포에 특화된 컨테이너이다. 가상 서버와는 대상 단위의 크기 자체가 다르다. 즉 애플리케이션 간의 연동 없이는 실용적 수준의 시스템을 구축할 수 없다. 다시 말해, 도커 컨테이너로 시스템을 구축하면 하나 이상의 컨테이너가 서로 통신하며, 그 사이에 의존관계가 생긴다. 그러면 컨테이너의 동작을 제어하기 윈한 설정 파일이나 환경 변수를 어떻게 전달할지, 컨테이너 가느이 의존관계를 고려할 때 포트 포워딩을 어떻게 설정해야하는 지 등의 요소를 적절히 관리해야한다. 이때 필요 한 것이 ★ 도커 컴포즈(Docker Compose) 이다. compose는 yaml 포맷으로 기술된 설정파일로, 여러 컨테이너의 실행을 한번에 관리할 수 있게 해준다. docker-..
[Docker] 도커 운영 및 관리를 위한 명령어 ⌗ 컨테이너 및 이미지 일괄 파기 실행 중이 아닌 모든 컨테이너 삭제한다. 정지된 컨테이너들을 재시작하는 과정이 자주 있는 테스트 등의 업무에서는 정지된 컨테이너들이 유용하지만 대부분은 쓸모가 없기에 정기적으로 삭제하는 것이 좋다. % docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 5f0aaba90b06c65ed1e04d5f022ea864716966e8f3c932756c33700e4be8222d 5699f8de8bb4b995d15807008f8d397343be967f275d0d022aac95e5fe8cf777 ..

❥ CHATI Github