diff --git a/backend/src/main/resources/application-prod.yml b/backend/src/main/resources/application-prod.yml index f9e31f0..6d934ed 100644 --- a/backend/src/main/resources/application-prod.yml +++ b/backend/src/main/resources/application-prod.yml @@ -33,6 +33,24 @@ spring: port: ${PROD_REDIS_PORT} password: ${PROD_REDIS_PASSWORD} embedded: false + kafka: + bootstrap-servers: kafka:9092 + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + consumer: + group-id: chat-processing-group # 컨슈머 그룹 ID + key-deserializer: org.apache.kafka.common.serialization.StringDeserializer + value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer + properties: + spring.json.trusted.packages: "*" + task: + scheduling: + shutdown: + await-termination: true + await-termination-period: 60s + lifecycle: + timeout-per-shutdown-phase: 60s security: oauth2: diff --git a/infra/.gitignore b/infra/.gitignore index 6d796f5..99d8fcf 100644 --- a/infra/.gitignore +++ b/infra/.gitignore @@ -5,4 +5,5 @@ terraform.tfstate terraform.tfstate.backup .terraform.tfstate.lock.info secrets.tf -init/sql \ No newline at end of file +init/sql +init/qdrant \ No newline at end of file diff --git a/infra/main.tf b/infra/main.tf index 75b2b0b..c7dfdfb 100644 --- a/infra/main.tf +++ b/infra/main.tf @@ -165,14 +165,14 @@ resource "aws_s3_object" "init_data_sql" { resource "aws_s3_object" "law_data_sql" { bucket = aws_s3_bucket.s3_bucket_1.bucket - key = "lawData-dev.sql" - source = "${path.module}/init/sql/dev/lawData-dev.sql" + key = "lawData.sql" + source = "${path.module}/init/sql/prod/lawData.sql" } resource "aws_s3_object" "precedent_data_sql" { bucket = aws_s3_bucket.s3_bucket_1.bucket - key = "precedentData-dev.sql" - source = "${path.module}/init/sql/dev/precedentData-dev.sql" + key = "precedentData.sql" + source = "${path.module}/init/sql/prod/precedentData.sql" } # EC2 설정 시작 @@ -311,12 +311,13 @@ docker run -d \ # SQL 폴더 생성 -mkdir -p /home/ec2-user/app/init/sql/dev +mkdir -p /home/ec2-user/app/init/sql/prod # S3에서 SQL 파일 다운로드 aws s3 cp s3://${var.prefix}-s3-bucket-1/init.sql /home/ec2-user/app/init/sql/init.sql -aws s3 cp s3://${var.prefix}-s3-bucket-1/lawData-dev.sql /home/ec2-user/app/init/sql/dev/lawData-dev.sql -aws s3 cp s3://${var.prefix}-s3-bucket-1/precedentData-dev.sql /home/ec2-user/app/init/sql/dev/precedentData-dev.sql +aws s3 cp s3://${var.prefix}-s3-bucket-1/lawData.sql /home/ec2-user/app/init/sql/prod/lawData.sql +aws s3 cp s3://${var.prefix}-s3-bucket-1/precedentData.sql /home/ec2-user/app/init/sql/prod/precedentData.sql +aws s3 cp s3://${var.prefix}-s3-bucket-1/legal_cases.snapshot /home/ec2-user/app/init/qdrant/snapshot/legal_cases.snapshot # MySQL 설정 폴더 생성 및 UTF8 설정 mkdir -p /dockerProjects/mysql/volumes/etc/mysql/conf.d @@ -325,6 +326,13 @@ cat < /dockerProjects/mysql/volumes/etc/mysql/conf.d/charset.cnf [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci +lower_case_table_names=1 +innodb_buffer_pool_size = 1G +innodb_flush_log_at_trx_commit = 2 +innodb_flush_method = O_DIRECT +tmp_table_size = 256M +max_heap_table_size = 256M +max_connections = 100 [client] default-character-set = utf8mb4 @@ -366,16 +374,21 @@ docker exec mysql mysql -uroot -p${var.password_1} -e " FLUSH PRIVILEGES; " -docker exec -i mysql mysql -uroot -p${var.password_1} ${var.app_1_db_name} < /home/ec2-user/app/init/sql/dev/lawData-dev.sql -docker exec -i mysql mysql -uroot -p${var.password_1} ${var.app_1_db_name} < /home/ec2-user/app/init/sql/dev/precedentData-dev.sql +docker exec -i mysql mysql -uroot -p${var.password_1} ${var.app_1_db_name} < /home/ec2-user/app/init/sql/prod/lawData.sql +docker exec -i mysql mysql -uroot -p${var.password_1} ${var.app_1_db_name} < /home/ec2-user/app/init/sql/prod/precedentData.sql # Qdrant 설치 +mkdir -p /qdrant/snapshots/legal_cases +aws s3 cp s3://${var.prefix}-s3-bucket-1/legal_cases.snapshot /qdrant/snapshots/legal_cases/legal_cases.snapshot + docker run -d \ --name qdrant \ --restart unless-stopped \ --network common \ -p 6333:6333 \ -p 6334:6334 \ + -v /qdrant/storage:/qdrant/storage \ + -v /qdrant/snapshots:/qdrant/snapshots \ qdrant/qdrant # Qdrant healthcheck 대기 @@ -440,7 +453,7 @@ resource "aws_instance" "ec2_1" { # 사용할 AMI ID ami = data.aws_ami.latest_amazon_linux.id # EC2 인스턴스 유형 - instance_type = "t3.micro" + instance_type = "t3.small" # 사용할 서브넷 ID subnet_id = aws_subnet.subnet_2.id # 적용할 보안 그룹 ID