반응형

Programming 375

RabbitMQ 개념과 구조 정리 (Exchange Type, Dispatch 등)

RabbitMQ 개념과 구조 정리 RabbitMQ란? 'RabbitMQ'는 AMQP를 구현하여 메시지 생성자와 소비자 사이에서 메시지를 중계해 주는 '메시지 브로커'입니다. * AMQP(Advenced Message Queuing Protocol) 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜 RabbitMQ는 메시지 지향 미들웨어(Message Oriented Middleware)에 속하는데요. 메시지 지향 미들웨어는 비동기 메시지를 사용하는 응용프로그램들 사이에서 데이터를 송수신하는 것을 의미하며, 이러한 시스템을 구현한 솔루션을 '메시지 큐(Message Queue)'라고 합니다. 그렇다면 메시지 큐를 사용하는 이유는 무엇일까요? 메시지 큐를 사용함으로써 얻을 수 있는 이점은 아래와 ..

@RequestMapping 정규식, PathPattern 활용하기

@RequestMapping 정규식, PathPattern 활용하기 '@RequestMapping'에는 정규식과 PathPattern을 적용할 수 있는데요. 이런 기능이 있는 줄 모르고 있었는데, 간단하고 또 활용성 있는 기능인 것 같아서 정리하게 되었습니다. @RequestMapping 정규식 사용 방법 @RequestMapping(value = "{변수명:정규식}") public void request(@PathVariable String 변수명) { ... } @RequestMapping에서는 다음과 같이 '{변수명:정규식}' 형식을 통해 정규식을 적용할 수 있는데요. //영문 대소문자 //http://localhost:8080/request/TestValue @RequestMapping("/req..

OSIV(Open Session In View) 개념 정리 및 예시

OSIV(Open Session In View) 개념 정리 및 예시 spring.jpa.open-in-view=false application.properties(또는 yml) 파일의 내용을 항상 복사 붙여 넣기 식으로 사용하고, 또 동작에 문제가 없었기 때문에 'spring.jpa.open-in-view' 옵션이 어떤 역할을 하는지 모르는 상태로 계속 사용해 왔었는데요. 최근 프로젝트에서 해당 옵션 값으로 인해 문제가 발생하면서 'OSIV(Open Session In View)'가 무엇인지 찾아보고 정리하게 되었습니다. OSIV란? 먼저 JPA의 EntityManager가 Hibernate에서는 Session이라고 불리는데요. OSIV의 Session은 이 세션을 의미합니다. 때문에 사실 JPA에서는 ..

spring boot email 전송 (spring-boot-starter-mail, mailjet)

Spring Boot Email 전송하기 (+ Mailjet) 해당 포스팅은 스프링 부트에서 'spring-boot-starter-mail' 의존성을 사용하여 이메일을 전송하는 코드 예시입니다. 전체 코드는 포스팅 맨 하단에 github 주소를 링크해 두었으니 참고해 주시면 좋을 것 같습니다. (아래 이메일 발송 코드는 spring boot 3.1.4 환경에서 작업되었습니다.) SMTP SMTP는 'Simple Mail Transfer Protocol'의 약자로 인터넷을 통해 이메일을 보내고 받는 데 사용되는 통신 프로토콜인데요. SMTP 서버는 SMTP 프로토콜(Simple Mail Transfer Protocol)을 사용하여 메일을 보내는 메일 서버의 구성 요소를 말하며, 이메일 발신 작업에만 사용되..

Dart Class 기본적인 사용법 정리

Dart 언어 Class 기본적인 사용법 정리 Dart는 객체 지향 프로그래밍 언어이며, Flutter 역시 객체 지향 프레임워크인데요. 객체 지향 프로그래밍(OOP)에서는 특정 객체를 생성하기 위한 틀인 클래스(class)가 중요하기 때문에 'Dart 언어의 기본적인 Class 사용법'을 정리한 내용입니다. Class class Student { String name = "leo"; int grade = 3; final String birth = "920101"; void info() { print("name: $name, grade: $grade"); } } void main() { var student = Student(); //출력 가능 print(student.name); //수정 가능 stud..

Programming/Flutter 2023.09.24

Prometheus 설정 및 실행, 사용 방법(+ PromQL)

프로메테우스 Prometheus 설정 및 실행, PromQL 사용 방법 해당 포스팅은 'Spring Boot Actuator', 'Prometheus 개념 및 특징' 포스팅에서 이어지는 내용으로 prometheus.yml 파일을 통한 프로메테우스 설정 및 실행, 그리고 기본적인 PromQL 사용 방법에 대한 내용입니다. 메트릭을 가져오기 위해 actuator가 실행되어 있어야 하며, actuator에 대한 선행 작업이 필요하신 경우 아래 포스팅을 참고하시면 좋을 것 같습니다. 2023.09.09 - [Programming/Monitoring] - Spring Boot Actuator(+ Micrometor) 모니터링 시스템 구축 1편 (spring boot 프로젝트 기반 모니터링 시스템 구축 관련 포스팅..

Prometheus 개념 및 특징 정리, 모니터링 시스템 구축 2편

모니터링 시스템 구축 2편, Prometheus 개념 및 특징 이전 포스팅을 통해 '모니터링의 개념과 목적' 그리고 spring-boot-actuator, Prometheus, Grafana를 통한 '모니터링 시스템 구축의 전체적인 흐름'에 대해서 살펴보았으며, 그중에서 'Actuator'와 'Micrometor'에 대해서 자세하게 알아봤습니다. 2023.09.09 - [Programming/Monitoring] - Spring Boot Actuator(+ Micrometor) 모니터링 시스템 구축 1편 이어지는 이번 포스팅에서는 actuator에서 만들어진 메트릭을 수집 및 통합하여 저장하는 역할을 하는 'Prometheus'의 개념과 특징에 대해 살펴보겠습니다. Prometheus 개념 및 특징 Pr..

Spring Boot Actuator(+ Micrometor) 모니터링 시스템 구축 1편

스프링 부트 모니터링 시스템 구축 - Spring Boot Actuator, Micrometor 해당 포스팅에서는 스프링 부트 프로젝트를 기반으로 하여 'spring-boot-actuator', 'Prometheus', 'Grafana'를 연동한 모니터링 시스템 구축에 대한 전체적인 흐름과 각각의 기능 그리고 실제 연동 방법에 대해서 살펴볼 예정입니다. 하나의 포스팅에서 다루기는 많은 내용이기 때문에 시리즈로 이어지며, 해당 포스팅에서는 Actuator에 대한 자세한 내용과 Micrometor의 역할에 대해 간단하게 다루고, 이어지는 포스팅에서 Prometheus와 Grafana에 대해 다뤄 볼 예정입니다. 모니터링(Monitoring) 시스템 '모니터링'이란 시스템 상의 상태 변화를 지속적으로 감시하는..

(Spring Boot) Filter를 통한 Request, Response Logging

Filter를 통한 Request, Response Logging 방식과 발생했던 문제 개발을 하다 보면 요청된 Request에 대한 로깅이 필요한 경우가 생기는데요. 해당 포스팅은 'Filter를 통해 Request, Response에 대한 로깅을 남기는 방법과 그 과정에서 발생했던 문제점'에 대해 기록한 내용입니다. *** Logging의 경우 Filter가 아닌 인터셉터(Interceptor) 또는 AOP(Aspect Oriented Programming)로도 처리가 가능한데요. 각각의 방식에 대한 용도와 장단점이 있겠지만, 여기서는 필터 체이닝 과정에서 ServletRequest, ServletResponse 객체에 대한 조작이 가능하다는 점과 스프링 영역 밖(Dispatcher Servlet 전..

Flutter 학습 전 Dart 언어의 특징 살펴보기

Dart 언어의 특징 살펴보기 해당 포스팅은 Flutter 학습 전 'Dart 언어에 대한 특징'을 살펴보며 정리한 내용입니다. Dart와 Flutter 'Dart'는 구글이 JavaScript를 대체하기 위해 2011년 개발한 웹 프로그래밍 언어인데요. '세련되지 않은 언어적 특성과 높은 러닝 커브', 'TypeScript 등 JavaScript를 대체할 수 있는 다른 언어의 등장', 'Dart로 이루어진 구현체가 없다는 점' 등의 이유로 인해 좋은 평가를 받지 못했습니다. (심지어 2018년에는 배울 필요가 없는 프로그래밍 언어 1위를 차지하기도 했었습니다.) 하지만 2017년 구글에서 클로스 플랫폼 앱 프레임워크인 'Flutter'를 발표한 이후 상황이 바뀌기 시작했습니다. 플러터의 가장 큰 장점은..

Programming/Flutter 2023.08.29
반응형