Spring Boot 기반 EMQ X 4.0 연동 및 중규모 IoT 아키텍처 설계 방안

1. 기술적 배경 및 도입 효과 1.1 EMQ X 4.0 의 핵심 기능 EMQ X 4.0 은 Erlang/OTP 생태계 위에서 작동하는 MQTT 브로커로, 수천만 대의 동시 연결 처리와 초당 수백만 건의 메시지 전송 능력을 갖췄습니다. 이전 세대 대비 분산형 데이터베이스인 Mnesia 를 기반으로 하여 ACID 특성을 보장하며, 클러스터 간 노드들이 풀 메쉬(Pull-Mesh) 토폴로지로 통신하여 장애 허 ...

6월 27일 22:35에 게시됨

MyBatis-Plus 핵심 기능 및 실무 활용 가이드

1. 주요 어노테이션 MyBatis-Plus(이하 MP)는 개발 생산성 향상을 위해 다양한 매핑 어노테이션을 지원합니다. @TableName: 자바 객체와 실제 데이터베이스 테이블 간의 이름을 매핑합니다. @TableId: 테이블의 기본 키(PK)를 지정하며, 자동 증가 등 생성 전략을 설정할 수 있습니다. @TableField: 객체의 필드와 DB 컬럼명이 다를 경우 ...

6월 25일 22:46에 게시됨

Spring Security 설정 가이드

@EnableWebSecurity 어노테이션 @EnableWebSecurity 어노테이션은 WebSecurity 모드를 활성화하는 역할을 담당합니다. 이는 Spring Security에서 웹 보안을 설정하기 위해 반드시 필요한 어노테이션입니다. Spring Boot를 사용하지 않는 일반 Spring Web MVC 프로젝트에서는 해당 어노테이션을 명시적으로 추가해야 합니다. 반면, Spring Boot 기반의 Spring Web MVC 애플 ...

6월 24일 00:55에 게시됨

고유량 상황에서의 Nginx 성능 최적화 및 병목 현상 해결 방안

Nginx 의 잠재력을 극대화하는 운영 전략 Nginx 는 업계 표준처럼 자리 잡은 고성능 웹 서버입니다. 그러나 프로덕션 환경에서 트래픽이 증가하자마자 시스템이 마비되거나 SSH 접속 자체가 불가능해지는 경험을 한 개발자라면 드물지 않습니다. 이는 종종 서버 교체나 Envoy 와 같은 대안 도입을 고려하게 만들지만, 대부분의 경우 문제는 소프트웨어 자체보다 설정값의 ...

6월 22일 03:10에 게시됨

GRPC 연결 문제 해결: io.grpc.netty.shaded.io.netty.handler.ssl.NotSslRecordException: SSL/TLS 레코드가 아님

문제 상황 최근 회사의 마이크로서비스 프레임워크를 사용하여 백엔드를 개발하면서 파이썬으로 작성된 서비스 인터페이스를 호출해야 했습니다. 여기서는 다른 언어 간의 인터페이스 호출을 위해 GRPC를 사용했습니다. 파이썬 서비스가 실행 중임을 알고 있었지만, 테스트 과정에서 백엔드에서 오류가 발생했습니다. 오류 메시지는 다음과 같습니다: Caused by: io.grpc.S ...

6월 20일 23:37에 게시됨

Spring AI 시작하기

기술 스택 분석 핵심 기술 Java 17: 최신 LTS 버전으로 성능 및 보안 향상 Spring Boot 3.4.2: 현대적 애플리케이션 개발 지원 Spring AI 1.0.0-M5: 통합 AI 서비스 추상화 프레임워크 의존성 설정 <repositories> <repository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> ...

6월 20일 18:22에 게시됨

스프링 부트에서의 AOP(관점 지향 프로그래밍) 및 포인트컷 표현식 활용

AOP 핵심 개념 관점(Aspect): 로깅이나 권한 검사와 같은 공통 관심사를 모듈화한 구성요소로, @Aspect 어노테이션을 통해 클래스를 관점으로 선언한다. 조인포인트(Join Point): 메서드 호출이나 예외 발생과 같은 실행 시점의 특정 위치이며, 스프링 AOP는 메서드 수준만 지원한다. 어드바이스(Advice): 조인포인트에서 수행되는 동작으로 다섯 가지 유형이 있다: @Bef ...

6월 13일 19:54에 게시됨

MyBatis-Plus SQL 쿼리 로그 출력 구성 방법

데이터베이스 연동 시 실제 발송되는 문장을 추적하는 과정은 디버깅 효율성을 높이는 핵심 요소입니다. MyBatis-Plus 는 이를 간편하게 처리할 수 있는 몇 가지 표준화된 절차를 제공합니다. 아래에서는 설정 파일 활용부터 코드로 직접 제어하는 방법까지 정리해 보겠습니다. 1. 설정 파일을 통한 활성화 가장 일반적으로 사용되는 방법은 애플리케이션 설정 파일에 해 ...

6월 13일 19:37에 게시됨

Spring Boot @Import 어노테이션을 활용한 자동 구성

1. 서론 Spring Boot에서 @Import 어노테이션은 지정한 클래스들을 Spring IoC 컨테이너에 자동으로 등록하는 강력한 기능을 제공한다. 이 어노테이션은 크게 4가지 방식으로 활용할 수 있다: 일반 Bean 클래스 직접 등록 Configuration 클래스 등록 ImportSelector 구현 클래스 등록 ImportBeanDefinitionRegistrar 구현 클래스 등록 @Import 어노테이션 정의 @Impo ...

6월 12일 00:07에 게시됨

Spring Boot 3에서 Druid 데이터베이스 풀 통합하기

Spring Boot 3 환경에서 Druid 커넥션 풀을 적용할 때 호환성 문제로 인해 접속 오류가 발생하는 경우가 있습니다. 본 문서는 이러한 문제를 해결하고 올바르게 설정하는 방법을 안내합니다. Maven 의존성 추가 pom.xml 파일에 다음 의존성을 포함시켜야 합니다: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-sprin ...

6월 11일 23:49에 게시됨