독립적으로 실행 가능한 애플리케이션을 “서비스”라고 부른다.

1개 이상의 “서비스”와 “공유 인프라”가 모여 하나의 “시스템”을 구성한다.

 

주문요청 API

  1. 요청값 검증 (애플리케이션)
  2. 주문 요청 (애플리케이션)
    • 주문 데이터 생성 (도메인)
    • 주문 데이터 검증 (도메인)
    • 주문 데이터 저장 (도메인)
  3. 주문 결과 처리 (애플리케이션)
  4. 응답 (애플리케이션)

서비스에 대한 플로우나 흐름을 제어하면 애플리케이션 비즈니스
도메인 단위에서 생성/변경/소멸의 라이프 사이클을 가지면 도메인 비즈니스

 

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

아키텍쳐  (0) 2023.08.18
[Kotlin] kapt(kotlin annotation processing tool)  (0) 2023.08.18
장애 탐지 및 알람  (0) 2022.11.24
Spring Elk 연동  (0) 2022.11.17
ELK 설치  (0) 2022.11.16

1. 모노리스

가장 단순한 단일 프로젝트

의존성 관리 힘듦

하나의 컴포넌트에 오류 발생시 관련 서비스들 모두 장애

 

2. 멀티 모듈을 layer 별로 구성(core, service, api 등) -> 모노리스(하나의 jvm)

패키지 의존성 관리에 신경써야함

도메인 간 분리가 어려울 수 있다. 해당 layer 의 도메인이 다른 layer 의 도메인과 어떻게 이어지는 지 모를 수 있다.

 

3. 멀티 모듈을 도메인 별로 구성하지만 -> 모노리스(하나의 jvm)

프로젝트가 서비스 단위로 나뉨

새로운 서비스 추가시 모듈 새로 생성해서 작업 분리된 환경에서 개발 가능

 

4. 멀티 모듈을 도메인 별로 구성 -> msa(여러 jvm)

서비스 간 의존도 가장 낮음

서비스 scale up 하기 용이함

서비스 간 통신에 신경써야함

 

 

 

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

멀티 모듈  (0) 2023.08.18
[Kotlin] kapt(kotlin annotation processing tool)  (0) 2023.08.18
장애 탐지 및 알람  (0) 2022.11.24
Spring Elk 연동  (0) 2022.11.17
ELK 설치  (0) 2022.11.16

Kotlin에서 Annotation처리를 위해서 KAPT(Kotlin Annotation Processing Tool)을 제공

Kotlin은 kotlinc로 컴파일되기 때문에 기존에 Java로 작성된 Annotation Process로는 Kotlin의 Annotation이 제대로 처리되지 않음

kapt 사용 시 호환성에 주의🚨

사용하는 library가 kapt를 지원하는지 확인해야함

 

plugins {
    val kotlinVersion = "1.8.21"
    kotlin("kapt") version kotlinVersion
}

val queryDslVersion = "5.0.0"

dependencies {
    //annotationProcessor -> kapt
    //annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:jakarta")
    kapt("com.querydsl:querydsl-apt:${queryDslVersion}:jpa")
}

 

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

멀티 모듈  (0) 2023.08.18
아키텍쳐  (0) 2023.08.18
장애 탐지 및 알람  (0) 2022.11.24
Spring Elk 연동  (0) 2022.11.17
ELK 설치  (0) 2022.11.16

Open Distro Alert 기능을 사용해 장애 알람을 받아봅시다

 

1. elasticsearch에 open distro alert 설치

vi elasticsearch/Dockerfile
ARG ELASTIC_VERSION

FROM docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_VERSION}
RUN elasticsearch-plugin install -b https://github.com/opendistro-for-elasticsearch/alerting/releases/download/v1.13.1.0/alerting.zip

 

2. kibana에 open distro alert 설치

vi kibana/Dockerfile
ARG ELASTIC_VERSION

FROM docker.elastic.co/kibana/kibana:${ELASTIC_VERSION}
RUN kibana-plugin install https://github.com/opendistro-for-elasticsearch/alerting-kibana-plugin/releases/download/v1.13.0.0/opendistroAlertingKibana-1.13.0.0.zip

 

3. elk랑 open distro alert 버전 맞추기

vi .env
ELASTIC_VERSION=7.10.2

 

4. x-pack 설정 off

vi elasticsearch/config/elasticsearch.yml

false로 수정합니다!

xpack.security.enabled: false
xpack.monitoring.collection.enabled: false

 

5. 실행

docker-compose build && docker-compose up -d

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

아키텍쳐  (0) 2023.08.18
[Kotlin] kapt(kotlin annotation processing tool)  (0) 2023.08.18
Spring Elk 연동  (0) 2022.11.17
ELK 설치  (0) 2022.11.16
mac에 docker 설치  (0) 2022.11.16

spring boot와 elk를 연동

 

기존 프로젝트를 열어서

pom.xml에 dependency 추가

<dependency>
	<groupId>net.logstash.logback</groupId>
	<artifactId>logstash-logback-encoder</artifactId>
	<version>7.0.1</version>
</dependency>

 

logback.xml에 추가

<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>127.0.0.1:50000</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder"></encoder>
</appender>

<root>
	<appender-ref ref="LOGSTASH"/>
</root>

 

application.yml에 추가

logging:
  config: classpath:logback.xml

 

이제 프로젝트 실행하면 logstash로 로그를 전송합니다.

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

[Kotlin] kapt(kotlin annotation processing tool)  (0) 2023.08.18
장애 탐지 및 알람  (0) 2022.11.24
ELK 설치  (0) 2022.11.16
mac에 docker 설치  (0) 2022.11.16
docker redis 설치  (0) 2021.02.17

mac에 docker 설치 후 docker 사용해 elk 구축하기

 

1. docker 설치

https://imsseong.tistory.com/34

 

mac에 docker 설치

저는 macOS Ventura intel칩 버전입니다! 1. os에 맞게 다운로드해주세요. https://www.docker.com/ Docker: Accelerated, Containerized Application Development Docker is a platform designed to help developers build, share, and run modern applic

imsseong.tistory.com

 

2. docker-elk 설치

terminal에 입력

git clone https://github.com/deviantony/docker-elk.git
cd docker-elk

 

3. elasticsearch 설정 변경

vi elasticsearch/config/elasticsearch.yml

하단에 xpack.monitoring.collection.enabled: true 추가

---
## Default Elasticsearch configuration from Elasticsearch base image.
## https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/config/elasticsearch.yml
#
cluster.name: "docker-cluster"
network.host: 0.0.0.0

## X-Pack settings
## see https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html
#
xpack.license.self_generated.type: trial
xpack.security.enabled: true
xpack.monitoring.collection.enabled: true

 

4. kibana 설정 변경

vi kibana/config/kibana.yml

elasticsearch.password: 패스워드 변경

 

5. logstash 설정 변경

vi logstash/config/logstash.yml
---
## Default Logstash configuration from Logstash base image.
## https://github.com/elastic/logstash/blob/main/docker/data/logstash/config/logstash-full.yml
#
http.host: "0.0.0.0"

xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
 vi logstash/pipeline/logstash.conf
input {
        beats {
                port => 5044
        }

        tcp {
                port => 50000
                codec => json_lines
                type => logstash
        }
}

## Add your filters / logstash plugins configuration here

output {
        stdout {
        }
        elasticsearch {
                hosts => "elasticsearch:9200"
                index => "logstash-%{+YYYY.MM.dd}"
                user => "elastic"
                password => "패스워드"
        }
}

 

6. docker-compose.yml

vi docker-compose.yml

 

ELASTIC_PASSWORD: 패스워드 변경

 

7. 실행

docker-compose build && docker-compose up -d

 

 

실행이 안됐습니다. ㅠㅠ

 

 

8. 에러 해결

에러: value of "elastic" is forbidden. This is a superuser account that cannot write to system indices that Kibana needs to function. Use a service account token instead.

 

해결: elasticsearch 인증을 token으로 변경

elasticsearch 터미널창 열고 토큰 발급

bin/elasticsearch-service-tokens create elastic/kibana my-token

 

SERVICE_TOKEN elastic/kibana/my-token = [AA~]

 

토큰 리스트 확인

bin/elasticsearch-service-tokens list

 

토큰 값 복사 후 kibana 설정 다시 변경해줍니다.

username과 password는 주석 처리 후 token값을 넣어줍니다.

vi kibana/config/kibana.yml
#elasticsearch.username: elastic
#elasticsearch.password: 패스워드
elasticsearch.serviceAccountToken: 토큰값

 

9. 재실행

docker-compose build && docker-compose up -d

 

10. 접속

http://localhost:9200/

http://localhost:5601/

 

 

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

장애 탐지 및 알람  (0) 2022.11.24
Spring Elk 연동  (0) 2022.11.17
mac에 docker 설치  (0) 2022.11.16
docker redis 설치  (0) 2021.02.17
Http를 통한 양방향 통신  (0) 2021.02.16

저는 macOS Ventura intel칩 버전입니다!

 

1. os에 맞게 다운로드해주세요.

https://www.docker.com/

 

Docker: Accelerated, Containerized Application Development

Docker is a platform designed to help developers build, share, and run modern applications. We handle the tedious setup, so you can focus on the code.

www.docker.com

 

2. 더블 클릭해서 실행 후 응용프로그램 디렉토리로 옮겨줍니다.

3. 터미널에서 설치 확인 가능합니다.

docker -v

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

Spring Elk 연동  (0) 2022.11.17
ELK 설치  (0) 2022.11.16
docker redis 설치  (0) 2021.02.17
Http를 통한 양방향 통신  (0) 2021.02.16
Http 통신과 Socket 통신  (0) 2021.02.16

docker pull redis

 

docker images

 

docker network create redis-net

 

docker network ls

 

docker run --name redis-container -p 6379:6379 redis

 

docker start redis-container

 

docker exec -it redis-container /bin/bash

'Web Programming > SPRINGBOOT' 카테고리의 다른 글

ELK 설치  (0) 2022.11.16
mac에 docker 설치  (0) 2022.11.16
Http를 통한 양방향 통신  (0) 2021.02.16
Http 통신과 Socket 통신  (0) 2021.02.16
P2P  (0) 2021.02.10

+ Recent posts