본문 바로가기

개발중

(617)
[Error] swagger Failed to load remote configuration. (시큐리티 설정한 후 에러발생) 아래와 같은 의존성으로 스웨거 설정이 성공적으로 마쳤으나, 시큐리티 설정한 후에 위와 같은 화면이 뜨는 것을 확인했습니다. implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.2.0' 이런 이슈를 해결하려고 구글링을 해보니 아래와 같이 시큐리티를 열어주라고 하였습니다. .requestMatchers("/v3/api-docs/**").permitAll() .requestMatchers("/api/authenticate").permitAll() 그래도 되지 않아서 filter 에서 요청 URL 찍어보니 아래와 같았습니다. requestURI = /swagger-ui/index.html re..
[Spring 동시성 관리/REDIS] - Redis 동시성 환경 설정 in Docker 실습가이드 Docker Imager Download 도커 이미지를 다운로드 받습니다. docker pull redis Docker Run 도커의 redis image 를 실행시킵니다. docker run --name myredis -d -p 6379:6379 redis 확인절차 docker container 상태 확인 도커가 잘 실행중인지 확인해주는 명령어를 실행합니다. docker ps docker redis 에 접속 redis 에 접속합니다. docker exec -it ead3cfe46fe5 redis-cli *** redis 를 깔아줬으니 귀여운 ping pong 놀이를 해봅니다.
[Spring 동시성 관리/DB] MySQL 동시성 환경 설정 in Docker 실습가이드 Docker Imager Download 도커 이미지를 다운로드 받습니다. docker pull mysql Docker Run 도커의 mysql image 를 실행시킵니다. docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql 기존 window mysql 3306 port 와 충돌 ( 저는 wsl2 에서 진행했으나 port 충돌이 일어날 수 있다고 합니다. ) mysql port 3307 으로 open 이미 사용학고 있는 3306 이 아닌 3307 으로 열어주었습니다. docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql 확인절차 dock..
[Spring 동시성 관리/JAVA] Synchronized
[JPA] 낙관적 락(Optimistic Lock)과 비관적락 (Pessimistic Lock) 이란 ? 낙관적 락 ( Optimistic Lock ) 비관적 락 ( Pessimistic Lock ) 선택 기준 충돌 발생 확률이 낮은 상황에서 주로 사용됩니다. 이 방식은 데이터가 대부분의 시간 동안 변경되지 않을 것이라는 '낙관적' 가정 하에 작동합니다. 충돌이 자주 발생할 것으로 예상되는 상황, 예를 들어, 동시에 여러 트랜잭션이 같은 데이터를 변경할 가능성이 높은 경우에 사용됩니다. 충돌 대응 데이터를 업데이트하는 시점에서만 충돌을 확인합니다. 만약 충돌이 발견되면, 일반적으로 트랜잭션을 재시도하거나 오류를 반환합니다. 데이터에 접근하기 전에 먼저 락을 걸어 다른 트랜잭션의 접근을 차단합니다. 이로써 충돌을 예방합니다. 사용 방법 낙관적 락은 버전 관리(Versioning) 등의 방법을 통해 구현할 수 ..
Spring Project 의 MyBatis 쿼리를 Console 에 찍는 설정 (log4j2) 의존성 추가 - 로그 관련 라이브러리를 추가합니다. org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 log4j2 파일 - resource 하위에 log4j2.xml 파일을 생성합니다. - 파일 안에 아래와 같이 코드를 작합니다. DataBase 접속 정보에 대한 수정 변경 전 spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/binsoo_db?serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.hikari.username..
Spring Boot vs Fluentd vs ElasticSearch ✨ 구성 요소 Spring Boot Pods 여기서 실행되는 애플리케이션 로그를 생성합니다. DaemonSet Fluentd Kubernetes 클러스터의 각 노드에 Fluentd를 실행하여 로그를 수집합니다. 이는 각 노드에 자동으로 배포되어 노드에 생성된 로그를 수집하는 역할을 합니다. 로그 전송 Fluentd는 수집한 로그를 Elasticsearch로 전송합니다. Elasticsearch Fluentd로부터 수신한 로그 데이터를 저장하고 인덱싱하여 검색이 가능하게 만듭니다. LogStash 와 Fluentd 중에서 Fluentd 를 선택한 이유 경량성 Fluentd는 Ruby와 C로 작성되어 있어 리소스 사용이 더 효율적일 수 있습니다. 반면, Logstash는 JRuby로 작성되었고 JVM 위에서 실..
Spring 환경에서 프로파일 별 효율적 코드 관리 전략 안녕하세요, 여러분! 오늘은 Spring 환경에서 프로파일(Profile)을 활용하여 코드를 효율적으로 관리하는 전략에 대해 이야기하려 합니다. 특히, 코드 유틸리티 클래스를 활용하여 다양한 환경(로컬, 프로덕션 등)에 맞게 유연하게 설정을 관리하는 방법을 중점적으로 다룰 것입니다. 공통적인 내용의 중앙화 개발 과정에서 중복되는 코드 관리는 큰 골칫거리가 될 수 있습니다. 이를 해결하기 위해 CodeUtils라는 추상 클래스를 정의했습니다. 이 클래스는 공통적으로 사용되는 코드 목록(initCodeList)을 정의하고, 실제 코드를 조회하는 getCode 메소드를 추상 메소드로 선언함으로써, 구체적인 구현을 상속받는 클래스에 위임합니다. @Component public abstract class Code..