전체 글 69

Slack API 적용해서 사용자에게 DM 보내는 기능을 만들어보자

클라이언트에서 API 요청을 하면 해당 사용자에게 DM을 보내는 기능을 만들어보자.향후에 MSA 통신으로 DM 보내는 기능으로 리팩터링 할 것 같다. Slack API: Applications | SlackYour Apps Don't see an app you're looking for? Sign in to another workspace.api.slack.com우선 Slack 기능을 사용하기 위해서 Token을 발급받아야 하는데, 위에 링크로 들어가서 Create New App을 통해 나만의 App을 만들어야 한다. 여기서 From scratch를 클릭한다.그럼 App Name과 워크스페이스를 지정해줘야 하는데 만약 워크스페이스가 없다면 Slack에서 워크스페이스를 만들어야 한다.이제 여기서 Setti..

Transaction 이란?

데이터베이스 데이터들의 무결성과 정합성을 유지하기 위한 것으로 데이터를 안전하게 관리하기 위해서 생겨난 개념이다.여러 작업을 하나의 작업으로 묶어서 처리하는 것으로 Commit, Rollback을 알아보자. 트랜잭션의 4가지 특징 ACID Atomicity (원자성) : 트랜잭션은 모두 실행되거나, 전혀 실행되지 않아야 한다. ex) 송금 과정에서 계좌에 돈이 빠져나갔지만 상대 계좌로 입금이 안되면 안 된다.Consistency (일관성) : 트랜잭션이 완료되면 데이터는 일관된 상태를 유지해야 한다. ex) 은행 계좌에서 100만 원이 빠져나가면, 전체 은행 시스테의 총금액은 변하면 안 된다.Isolation (격리성) : 여러 트랜잭션이 동시에 실행되더라도 서로 영향을 주면 안 된다. ex) 두 명이 ..

DDD (Domain Driven Design) : 도메인 주도 설계 도전 1일차

간단하게 복잡한 소프트웨어 시스템을 개발할 때, 비즈니스 도메인(업무 영역)을 중심으로 설계하고 구현하는 접근 방식이라고 이해를 해보겠습니다. 도메인 : 시스템이 해결하고자 하는 비즈니스 문제의 영역 ex) 쇼핑몰, 금융 시스템...엔티티 : 고유한 식별자를 가진 객체 ex) User 객체, Order 객체...값 객체 : 고유한 식별자가 필요 없는 객체. 주로 그 자체에 속성 값이 중요하다.  ex) 주소를 나타내는 Address 객체애그리게이트 : 관련 엔티티와 값 객체의 묶음. 한 개의 애그리게이트 루트가 전체 애그리게이트를 대표하고, 이 루트를 통해서만 애그리게이트에 접근할 수 있다. ex) 루트 = Order 객체, 애그리게이트 = OrderItem 객체...레포지토리 : 엔티티의 영속성을 관리..

🖥️ Back-end 2025.03.13

Dockerfile과 docker-compose.yml

Docker 생태계에서 애플리케이션을 정의하고 관리하는 데 매우 중요한 파일이다. Dockerfile은 Docker 이미지를 빌드하기 위해 사용되는 파일이다.애플리케이션을 컨테이너화하여서 배포 or 실행하려면, Docker 이미지가 있어야 하는데, Dockerfile을 사용하여 이미지를 위한 모든 의존성, 환경 설정, 실행 명령어 등을 지정할 수 있다.Docker 이미지의 구성 요소를 정의한다.각 명령어는 이미지의 새로운 계층을 형성하는데, 이미지의 변경 사항을 효율적으로 관리할 수 있다.이미지를 빌드한 후, 이미지를 다른 환경에서도 동일하게 사용할 수 있다.# 베이스 이미지 지정FROM python:3.8-slim-buster# 작업 디렉토리를 설정WORKDIR /app# 의존성 파일을 복사하고 설치C..

웹 사이트의 동작 원리

사용자는 접속하고 싶은 브라우저의 주소를 입력하게 되면 원하는 브라우저를 볼 수 있게된다. 예를 들어 www.google.com으로 로 접속하면 우리는 google 화면을 볼 수 있다. 그렇다면 내부적으로는 어떻게 동작하는지도 알아보자  우선 OSI 7계층에 대해서 간단하게 알아보면OSI 7계층 모델은 네트워크 통신을 7개의 계층으로 나누어 설명하는 참조 모델이다. 상위 계층으로 갈수록 사용자와 가까운 부분을 다루게 된다고 볼 수 있다.물리 계층 : 네트워크 장비 간의 물리적 연결을 담당한다. ex) 비트 전송, 전기적 신호 변환, 케이블 및 하드웨어 연결데이터 링크 계층 : 인접한 네트워크 장비 간의 데이터 전송을 관리한다. ex) 오류 감지 및 수정, MAC 주소 관리 등.네트워크 계층 : 데이터가 ..

🖥️ Back-end 2025.03.11

Spring Cloud 란? (5) - Event-Driven Architecture

애플리케이션 내에서 특정 이벤트가 발생했을 때, 이를 감지하고 적절한 핸들러(리스너)가 동작하는 방식으로 설계하는 것이벤트 : 시스템 내 또는 외부에서 발생하는 상태 변화나 특정 동작을 의미한다 ex) 사용자가 버튼을 클릭, 주문이 생성 등.발생자(Producer) : 이벤트를 생성하고, 이벤트 버스에 전달하는 컴포넌트 ex) 프론트엔드, 사물인터넷 센서 등.소비자(Consumer) : 이벤트를 수신하고 이를 처리하는 컴포넌트  ex) 주문 처리 서비스, 알림 시스템 등.버스 : 발생자와 소비자를 연결하는 중개 시스템으로, 이벤트의 전달과 라우팅을 담당한다. ex) 메시지 브로커 시스템 EDA의 장점으로는 유연성 : 컴포넌트 간의 느슨한 결합으로 시스템 확장 및 변경이 용이하다.스케일링 : 비동기 처리로..

Spring Cloud 란? (5) - 분산 추적

Spring Cloud 란? (4) - API Gateway클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가 기능을 제공하는 중간 서버 역할.클라이언트 요청을 적절한 서비스로 전달하는 라우팅 기능요청의 인증 및 권한을 검증여seungg8361.tistory.com Spring Cloud에서 분산 추적은 분산 시스템에서 발생하는 요청의 흐름을 추적하고 모니터링하는 중요한 기술로, 여러 서비스가 서로 독립적으로 실행되면서도 서로 의존하고 상호작용하는 시스템이다. MSA에서 각 서비스는 독립적으로 실행되며, 클라이언트의 요청을 처리하기 위해 서로 다른 서비스에 요청을 보내는데, 분산 추적은 이러한 여러 서비스 간의 요청 흐름을 추적하여 문제 해결, 성능 최적화, 서비스 상태 모니터링 등을 할 ..

Spring Cloud 란? (3) - 서킷 브레이커

마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴으로외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 한다.  Spring Cloud 란? (1)마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장이며, 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다. 주요 기능 ▼서비스 등seungg8361.tistory.com   Resilience4j 주요 특징 ▼서킷 브레이커의 상태인 클로즈드, 오픈, 하프-오픈 상태를 통해 호출 실패를 관리한다.클로즈드 (Closed) : 기본 상태, 모든 요청을 통과시킨다. 호출이 실패하면 실패 카운터가 증가하고, 실패율이 설정된 임계값을 초과..

Eureka 서버 사용해보기

Spring Cloud 란? (1)마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장이며, 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다. 주요 기능 ▼서비스 등seungg8361.tistory.comMSA에서는 여러 개의 독립적인 서비스들이 존재하며, 이 서비스들이 동적으로 변할 수 있기 때문에, 서로의 위치(IP, 포트 등)를 알기 어렵다.Eureka 서버는 각 서비스의 정보를 관리하고 제공하여, 서비스 간의 통신을 원활하게 만들어 줄 수 있다.  만약 마이크로서비스 간 통신이 필요한 상황이 온다면, Eureka 서버에서 해당 서비스의 위치(IP, 포트)를 조회해서 클라이언트가 원하는 요청을 Eureka 서버를 통해 대상 서비스의 위치를 동적으로 가..

JPA Auditing 이란?

데이터의 생애 주기(Lifecycle)를 추적하고 관리하기 위해 사용할 수 있다. JPA Auditing과 LocalDateTime을 사용하면 각 엔티티의 생성, 수정, 삭제 시점과 같은 중요한 정보를 자동으로 기록하고 관리할 수 있다. 엔티티의 수명 동안 언제 생성되고 수정되었는지 추적하는 것은 시스템의 변경 내역을 관리한다. 예를 들어, 사용자가 데이터를 수정하거나 새로운 엔티티를 추가할 때, 데이터가 언제 어떻게 변경되었는지 알 수 있어서 문제가 발생한 시점이나 원인을 추적하는 데 용이하고, 누가 언제 데이터를 변경했는지 기록할 수 있어서 보안 감사, 법적 요구사항 등을 충족하는 데 필요할 수 있다.데이터의 생성일과 수정일을 추적하면, 더 이상 사용되지 않는 오래된 데이터를 쉽게 식별할 수 있어서 ..