본문 바로가기

분류 전체보기95

Self-Signed Certificate 인증서 적용(Spring, Nginx) OpenSSL 을 이용한 Self-Signed Certificate 인증서 적용(Spring, Nginx) 운영중인 서비스나, 사이드 프로젝트를 사용자들에게 실제로 서비스 하려면 HTTPS 프로토콜을 필수적으로사용해야 한다. 이것을 적용하기 위한 요소중 하나로 인증서가 필요하게 된다. 해당 글에서는, Spring boot Gateway, Nginx 에 SSL/TLS 를 적용하여, HTTPS 통신이 가능하게 진행해볼것이다. 이때 클라이언트가 실제로 접근해야 하는 공개된 서비스에서는 자가서명인증(Self-signed Certificate) 를 사용하면 안된다.만약 실 사용자가 접근 하게되는곳에 자가서명인증을 사용하게 된다면 브라우저(크롬, 사파리) 에서 인증불가브라우저에서 "경고", "신뢰불가", "HTTP.. 2025. 11. 20.
[Docker] openjdk failed to resolve source Error OpenJdk: failed to resolve source metadata for docker.io Error홈서버에 WAS 를 재배포해야할 작업이 존재해서 Jenkins 를 통해 배포하던 도중 발생한 오류이다. (openjdk not found, openjdk failed to resolve source metadata) 오류 메시지만 보고도 어떤 오류인지 바로 인지가 되었지만(해당 이미지를 찾을 수 없어 더 진행할 수 없다는 의미),openjdk 는 많이 사용되는 이미지이기 때문에 이름이나 버전을 표시하는 방법이 바뀌었나? 라고 생각했었다. docker manifest inspect openjdk:17-jdk해당 명령어를 사용하여 이미지를 다시 확인해봤지만 여전히 찾을 수 없었고, Docker .. 2025. 11. 14.
[Spring Boot] Spring boot Java 프로젝트 에서 Kotlin 프로젝트로 전환(Cloud Gateway) Spring Cloud Gateway Java 에서 Kotlin 으로 전환현재 홈서버에서 외부에서 들어오는 모든 요청을 받아서 내부에 있는 각 Service 들로 Routing 해주는 API Gateway 모듈이 하나 존재한다. 현재는 Java 기반으로 구축되어있지만 해당 모듈을 Kotlin 기반으로 전환해볼것이다.다만 해당 모듈은 JPA 를 사용하고 있지 않으므로, JPA 전환과 관련된 내용은 미약할 예정이다. Intellij 에서는 Convert Java File to Kotlin File 기능을 기본적으로 지원하지만, 완벽하게 변환을 해주지 않고, Kotlin 의 특징을제대로 살리지 못한다는 느낌을 받았다. 그래서 가벼운 모듈을 전환해보면서 어떤 방식으로 전환하고 주의할점이 무엇인지 확인할 예정이다.. 2025. 9. 2.
[Docker] Sonatype Nexus Repository - 사설 docker registry 구축 Sonatype Nexus Repository - 사설 docker registry 구축지난번 포스팅에서는 Docker Registry 를 구축하여, Docker Image 에 대한 사설저장소를 구축해보았었다. https://lucas-owner.tistory.com/89 [Docker] Docker Registry(Private Repository, Http)Docker Private Registry사내에서 사용되는 Docker Image 같은 경우, Public 하게 관리되어서는 안되는 경우들이 존재한다. 백엔드 서버 라던지 OS정보, 네트워크, 설정 정보와 같은것들이 Image 파일안에 전부lucas-owner.tistory.com Nexus Repository 는 도커이미지뿐만 아니라, 다양한 대.. 2025. 8. 18.
[kotlin] 코루틴(Coroutine) 개념과 MVC kotlin 코루틴(Coroutine) 개념과 MVC코틀린이 자바를 대체가능하게 되면서 점점 많은 플랫폼들에서 자바에서 코틀린으로 마이그레이션을 완료했거나 진행하고 있는것 같다.아니면 `코루틴` 이라는 효율적인 라이브러리를 사용하기위해 넘어오는 경우도 존재하는것 같다. 그럼 코루틴이 뭔지, 기존의 MVC 프로젝트 에서 효율적으로 사용할 수 있는것인지 설명해보도록 하겠다. 코루틴(Coroutine)이란?우선 코루틴이란 코틀린이라는 언어에 종속적이지 않다. C#, Python, JavaScript 와 같은 언어에서도 지원하고 있다.코루틴은 Co(함께) + routine(작업의 순서, 규칙적인 일의 순서) 2개의 단어가 합쳐진 단어이다. 실행의 지연과 재개가 가능하며, 비선점적 멀티태스킹을 위한 서브루틴을.. 2025. 7. 12.
[Spring boot] QueryDSL 보안취약점 - OpenFeign QueryDSL 마이그레이션(Kapt) QueryDSL 보안취약점과 OpenFeign QueryDSL 로 마이그레이션 Spring boot 기반의 서버 개발을 진행하다 보면 QueryDSL 도입이 고려되는 경우가 존재한다.하지만 QueryDSL 에 도입이 망설여지는 이유들과(걱정되는부분), kotlin 으로 개발 진행시 kapt 를 사용중이라면 KSP 로 마이그레이션을 해야하는지 등 QueryDSL 관련된 부분들과, APT(Annotation Processing Tool) 에 관련된 내용을 서술해보도록 하겠다. 목차QueryDSL 의 문제점QueryDSL 의 보안 취약점(CVE-2024-49203)OpenFeign QueryDSLOpenFeign QueryDSL 적용(전환)목차별로 필요한 부분만 확인! 1. QueryDSL 의 문제점우선.. 2025. 6. 12.
[Linux] Ubuntu 부팅시 iptables 설정 reset 대응 재부팅시 Iptables 설정 Reset 대응얼마전 Oracle Cloud 에서 이메일이 하나 왔다. 마이그레이션을 위해 인스턴스를 정해진 날짜안에 "수동 재부팅" 혹은 날짜이후 자동 재부팅 된다는 내용이었다.오라클 서버에서 재부팅 후 꼭 실행 되어야 하는것들과 그렇지 않은것은 전부 설정을 해두었기 때문에 재부팅을 해도 사이드 이펙트가 없을것으로 판단하여 재부팅을 진행 하였다. - 문제 상황재부팅 이후 인스턴스가 정상적으로 작동하는것을 콘솔에서 확인 이후 SSH 접속을 시도 했지만 "Connection Refused" 와 함께 접속이 되지 않았다. 해당 인스턴스는 Password 접속 방식이 아닌, SSH Key 접속 방식이어서 Oracle Console 의 "Local Connection" 도 불가능.. 2025. 5. 26.
[Redis] DistributedLock(Spin Lock) - Spring boot 1. DistributedLock(분산락) - Spin Lock 방식서비스를 구현하다보면 많은 문제가 발생하고는 합니다. 그 중 가장 많이 대두되는 문제중 하나는 바로 동시성 문제(Race Condition) 입니다. 분산환경 즉 여러대의 서버 혹은 인스턴스가 동일한 자원(DB, 파일, 캐시 등)을 동시에 접근하려 할때 발생하는 문제로 경우에 따라 크리티컬한 문제를 발생시킬 수 있는 요소입니다. 이런 동시성 문제를 방지하기 위해 "Lock" 이라는 개념이 필요하게 되며, Lock 을 구현하는 방법중 하나인 Redis 를 이용하게 되고, Lock 구현 방식에 따라 어떤 Redis 라이브러리를 선택해야 하는지 결정을 해야만 합니다. 분산락을 구현하는 방법들은 다음과 같습니다.Redis 기반, Zookeepe.. 2025. 4. 16.
Webflux & SCG - Grafana uri Path Metrics "UNKNOWN" 노출 Webflux & SCG - Grafana uri Metrics "UNKNOWN"본문 제목만 보면 어떤문제인지 잘 감이 안온다. 쉽게 말해보자면 아래와 같은 Grafana 모니터링 Dashboard 가 있을때 Http URI Path 가 사용자가 요청한 Path 가 나오는게 아닌"UNKNOWN" 으로 표시되는 문제이다. 해당 문제는 Spring Cloud Gateway - Grafana 환경에서 발생하였다.Spring Cloud Gateway(SCG) 는 reactive 프레임워크를 사용하고 있으며(반대는 mvc) SCG 에서는 둘중 어떤 프레임워크를 사용하던동일한 문제가 발생중인것으로 확인되었다.   사진이 자세히 보이지 않으니 더 자세하게 보자면, 우리가 원하는 Metric 수집은 아래 처럼 path.. 2025. 4. 3.