diff --git a/.github/workflows/friendship-pipeline.yml b/.github/workflows/friendship-pipeline.yml index ad5549fb..84fbae09 100644 --- a/.github/workflows/friendship-pipeline.yml +++ b/.github/workflows/friendship-pipeline.yml @@ -91,7 +91,7 @@ jobs: sudo docker rm friendship || true # 새 friendship 컨테이너 실행 - sudo docker run -d --log-driver=syslog -p 443:8080 --name friendship --network friendship-network -e spring.profiles.active=prod -e TZ=Asia/Seoul ${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }}:latest + sudo docker run -v /home/ec2-user/elk/logs:/logs -d --log-driver=syslog -p 443:8080 --name friendship --network friendship-network -e spring.profiles.active=prod -e TZ=Asia/Seoul ${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }}:latest # friendship 관련 종료된 컨테이너 삭제 sudo docker container prune -f diff --git a/.gitignore b/.gitignore index 0eb9aad1..01ef7c5c 100644 --- a/.gitignore +++ b/.gitignore @@ -40,4 +40,4 @@ out/ .vscode/ ### LOG ### -/src/main/resources/log/history/** +/logs diff --git a/Dockerfile b/Dockerfile index 943c1858..11b23b79 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ FROM openjdk:17-ea-11-jdk-slim -VOLUME /tmp +VOLUME /logs COPY build/libs/backend-0.0.1-SNAPSHOT.jar FriendShip.jar ENTRYPOINT ["java", "-jar", "FriendShip.jar"] \ No newline at end of file diff --git a/src/main/java/com/aliens/backend/global/config/AsyncConfig.java b/src/main/java/com/aliens/backend/global/config/AsyncConfig.java new file mode 100644 index 00000000..63b1bf11 --- /dev/null +++ b/src/main/java/com/aliens/backend/global/config/AsyncConfig.java @@ -0,0 +1,27 @@ +package com.aliens.backend.global.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.AsyncConfigurer; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.Executor; + +@Profile({"dev", "prod"}) +@EnableAsync +@Configuration +public class AsyncConfig implements AsyncConfigurer { + @Override + public Executor getAsyncExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + int processors = Runtime.getRuntime().availableProcessors(); + executor.setCorePoolSize(processors); + executor.setMaxPoolSize(processors * 2); + executor.setQueueCapacity(50); + executor.setKeepAliveSeconds(60); + executor.setThreadNamePrefix("AsyncExecutor-"); + executor.initialize(); + return executor; + } +} diff --git a/src/main/java/com/aliens/backend/notification/service/FcmSender.java b/src/main/java/com/aliens/backend/notification/service/FcmSender.java index 4551f31d..bc244a93 100644 --- a/src/main/java/com/aliens/backend/notification/service/FcmSender.java +++ b/src/main/java/com/aliens/backend/notification/service/FcmSender.java @@ -15,6 +15,7 @@ import com.google.firebase.messaging.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.util.List; @@ -39,6 +40,7 @@ public FcmSender(MemberRepository memberRepository, this.objectMapper = objectMapper; } + @Async public void sendBoardNotification(Comment comment, Member writer) { Notification notification = Notification.builder() .setTitle(FRIENDSHIP_TITLE) @@ -53,6 +55,7 @@ public void sendBoardNotification(Comment comment, Member writer) { // sendSingleFcm(message); } + @Async public void sendBoardNotification(Comment comment, List writers) { Notification notification = Notification.builder() .setTitle(FRIENDSHIP_TITLE) @@ -69,6 +72,7 @@ public void sendBoardNotification(Comment comment, List writers) { } } + @Async public void sendChatMessage(com.aliens.backend.chat.domain.Message message) { var fcmMessage = createFcmMessage(message); // sendSingleFcm(fcmMessage); @@ -105,6 +109,7 @@ private void sendSingleFcm(Message message) { } } + @Async public void sendMatchedNotification(Set members) { List tokens = members.stream().map(this::findFcmTokenByMember).toList(); Notification notification = Notification.builder() diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index b0cc5b41..59cef989 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -6,9 +6,12 @@ spring: logging: level: org.springframework.web.socket.config.WebSocketMessageBrokerStats: ERROR + root: info + config: classpath:logback-spring.xml websocket: port: 8080 endpoint: /ws topic: /room request: /chat + diff --git a/src/main/resources/log/config/error-config.xml b/src/main/resources/log/config/error-config.xml deleted file mode 100644 index 353168c0..00000000 --- a/src/main/resources/log/config/error-config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - ERROR - ACCEPT - DENY - - - - - - - level - - - - - - - - - yyyy-MM-dd'T'HH:mm:ss.SSSSSS - - - - - logger - - - - - message - - - - - stacktrace - - - - - - - - - - src/main/resources/log/history/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.log.zip - - - 30 - - - 5GB - - - diff --git a/src/main/resources/log/config/info-config.xml b/src/main/resources/log/config/info-config.xml deleted file mode 100644 index 50615bf3..00000000 --- a/src/main/resources/log/config/info-config.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - INFO - ACCEPT - DENY - - - - - - - level - - - - - - - - - yyyy-MM-dd'T'HH:mm:ss.SSSSSS - - - - - message - - - - - stacktrace - - - - - - - - - - home/ec2-user/log/history/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.log.zip - - - 30 - - - 5GB - - - diff --git a/src/main/resources/log/config/warn-config.xml b/src/main/resources/log/config/warn-config.xml deleted file mode 100644 index a1a7d979..00000000 --- a/src/main/resources/log/config/warn-config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - WARN - ACCEPT - DENY - - - - - - - - - - level - - - - - yyyy-MM-dd'T'HH:mm:ss.SSSSSS - - - - - thread - - - - - logger - - - - - message - - - - - stacktrace - - - - - - - - - - src/main/resources/log/history/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.log.zip - - - 30 - - - 5GB - - - diff --git a/src/main/resources/logback-dev.xml b/src/main/resources/logback-dev.xml deleted file mode 100644 index e771b953..00000000 --- a/src/main/resources/logback-dev.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - ${CONSOLE_LOG_PATTERN} - ${CONSOLE_LOG_CHARSET} - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/logback-prod.xml b/src/main/resources/logback-prod.xml deleted file mode 100644 index a033d5d5..00000000 --- a/src/main/resources/logback-prod.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index e771b953..d8442e68 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -1,5 +1,6 @@ + @@ -8,12 +9,6 @@ - - - ${CONSOLE_LOG_PATTERN} - ${CONSOLE_LOG_CHARSET} - - @@ -29,7 +24,128 @@ - - - + + + + ${CONSOLE_LOG_PATTERN} + ${CONSOLE_LOG_CHARSET} + + + + + + + + + + + INFO + ACCEPT + DENY + + ${LOG_PATH}/${LOG_FILE_NAME}.log + + + + + level + + + + + + + + + yyyy-MM-dd'T'HH:mm:ss.SSSSSS + + + + + message + + + + + stacktrace + + + + + + + ${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.gz + 30 + 1GB + + + + + + + ERROR + ACCEPT + DENY + + ${LOG_PATH}/${ERR_LOG_FILE_NAME}.log + + + + + level + + + + + + + + + yyyy-MM-dd'T'HH:mm:ss.SSSSSS + + + + + logger + + + + + message + + + + + stacktrace + + + + + + + ${LOG_PATH}/${ERR_LOG_FILE_NAME}.%d{yyyy-MM-dd}.gz + 30 + 1GB + + + + + + logstash:50000 + + + + + + + + + + + + + + + +