본문 바로가기

반응형

전체 글

[Spring Cloud] Resilience4j 를 이용한 circuitbreaker 기능 구현 Circuitbreaker란 circuitbreaker란 전기 회로의 회로 차단기에서 차용한 개념이며 주식 용어에서도 사용이 된다. 평상시에는 전기가 흐르거나 거래를 자유롭게할 수 있지만(close state) 급격한 이상 현상이 발생했을 때 회로를 차단 또는 주식 시장의 거래를 정지하여(open state) 각각 회로 보호와 시장의 안정을 위한 장치이다. 여기서 close state가 정상적인 상태이고 open state가 차단상태인지 헷갈릴 수 있는데 이는 전기회로에서 스위치의 개념을 이해해야한다. 왼쪽 회로와 같이 스위치가 닫혀있어야지 전류가 흐르고 회로가 정상 작동하게 되고 오른쪽과 같이 스위치가 열려있으면 전류는 흐리지 못하고 회로는 차단이 된다. micro service 에서도 이와 같은 개념.. 더보기
[Spring Boot] Websocket 통신 시 JWT 인증 (interceptor 적용) Interceptor 적용을 위해 configureClientInboundChannel 메서드를 재정의 @Configuration @EnableWebSocketMessageBroker class WebsocketConfig( private val env: Environment ) : WebSocketMessageBrokerConfigurer { //... /** interceptor 적용 **/ override fun configureClientInboundChannel(registration: ChannelRegistration) { registration.interceptors(object : ChannelInterceptor { override fun preSend(message: Message, .. 더보기
[Spring Boot] 소켓 통신을 위한 Websocket 서버 구성 spring boot websocket 종속성 추가 implementation("org.springframework.boot:spring-boot-starter-websocket") 위가 같이 종속성을 추가하면 사용중인 spring boot의 버전과 호환되는 버전으로 설정된다. websocket 환경설정 @Configuration @EnableWebSocketMessageBroker class WebsocketConfig( private val env: Environment ) : WebSocketMessageBrokerConfigurer { override fun configureMessageBroker(config: MessageBrokerRegistry) { config.enableSimpleBro.. 더보기
[Android] Retrofit 요청 시 url 인코딩 안 되게 하기 문제 retrofit으로 RestAPI 요청 작업 시 url에 서비스키(accessKey)가 들어가야하는 경우가 종종 있는데 이 때, 서비스키에 = 또는 + 와 같이 인코딩 시 문자가 바뀌어 요청이 되어 에러를 발생하게 된다. reftofit @Query annotation에 다음과 같이 encoded = true 옵션으로 해결이 된다는 내용의 글들이 많이 보인다. @Query(value = "value", encoded = true) 하지만 해당 방법으로 요청을 보내도 url은 인코딩되어 전달이 되고, 결과 역시 에러를 발생시킨다. 정확한 원인은 찾아봐도 잘 나오지 않지만 아마 okhttp에 설정을 따로 안 해줘서 그런거같다. 해결 해결 방법은 okHttp의 인터셉터에서 url의 인코딩된 부분을 rep.. 더보기
[Jenkins] Docker Jenkins로 Spring Boot 빌드 및 배포 - 2 (파이프라인 작성 및 빌드 테스트) 시스템 환경 jenkins 인스턴스 (ec2 ubuntu 20.04) server 인스턴스 (ec2 ubuntu 20.04) 개발 데스크탑 (mac 12.0.1) 구현할 파이프라인 구조 개발 데스크탑에서 코드 작성 후 github push github에서 webhook -> jenkins instance jenkins 파이프라인실행 git clone gradle build docker build docker image push jenkins 인스턴스에서 server 인스턴스로 ssh 접속 server 인스턴스 docker image pull server 인스턴스 docker image run server 인스턴스 기존에 같은 서비스 존재 시 기존 서비스 종료 jenkins에서 메일 또는 슬랙으로 결과 전.. 더보기
[Jenkins] Docker Jenkins로 Spring Boot 빌드 및 배포 - 1 (Jenkins 권한 및 플러그인 설정) 시스템 환경 jenkins 인스턴스 (ec2 ubuntu 20.04) server 인스턴스 (ec2 ubuntu 20.04) 개발 데스크탑 (mac 12.0.1) 구현할 파이프라인 구조 개발 데스크탑에서 코드 작성 후 github push github에서 webhook -> jenkins instance jenkins 파이프라인실행 git clone gradle build docker build docker image push jenkins 인스턴스에서 server 인스턴스로 ssh 접속 server 인스턴스 docker image pull server 인스턴스 docker image run server 인스턴스 기존에 같은 서비스 존재 시 기존 서비스 종료 jenkins에서 메일 또는 슬랙으로 결과 전.. 더보기
[Docker] 도커 컨테이너에서 도커 이미지 빌드 (with jenkins) 발단 docker 환경에서 jenkins를 이용하여 pipeline구축 시 docker 이미지를 빌드해야하는 경우가 생긴다. 이때 jenkins를 docker로 실행시키지 않는다면 권한 부여만으로 해결이 가능하지만 jenkins를 docker이미지로 구동하면 jenkins컨테이너에서 host의 docker를 사용하여 빌드를 해야한다. 이때 해결방법으로 jenkins컨테이너에 내에 다른 docker 데몬을 실행하는 것 인데 이 방법은 docker에서 권장하지 않는다. 해결 방법 해결방법은 host의 docker소켓을 컨테이너와 공유하는것이다. 이렇게 하면 컨테이너가 host의 docker 데몬을 사용하여 이미지 빌드, 컨테이너 실행을 할 수 있다. 빌드된 이미지 사용 docker run \ -p 8080:.. 더보기
SSH 간편하게 접속하기 (with EC2) 문제 EC2를 사용하게 된다면 SSH접속을 자주 하게 될것이다. 그런데 여기서 SSH명령어의 길이가 길어 외우는건 불가능하여 매번 복붙 또는 history에서 가져와야하는데, 이 일도 어떤 경우에선 번거러운 일이 될 수 있다. (ec2 접속해서 ip를 찾아보거나 pem 파일 경로 를 찾거나 등등) ssh -i [pem file] [host name]@[ip address] 그래서 SSH 접속을 아주 간단하게 할 수 있는 방법을 적용해 보자. 해결 방법 * pem 파일 권한이 있는 user로 진행해야함. 1. 먼저 pem 파일의 위치를 ~/.ssh 디렉토리로 옮겨준다. (안 옮기고 현재 위치 그래도 해도 무관) mv [pem file] ~/.ssh 2. ~/.ssh 디렉토리에 config 파일 작성 vim.. 더보기

반응형