SonarQube프로그램 정적 분석 도구로, 실행 없이 코드를 분석하는 것 SonarQube 설치docker-compose를 이용해 설치하는 방법sonarqube를 사용하기 위해서는 PostgreSQL DB가 필요sonarqube를 실행하기 전, postgresql에서 sonar 유저와 DB 생성 필요docker-compose.yml sonarqube: image: sonarqube:community ports: - "9000:9000" container_name: sonarqube depends_on: - postgres environment: SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/${DATABASE}..
✅ [문제점]배포되는 과정에서 서비스가 중단되거나 오류가 발생한 경우 정상적으로 동작하지 않음특히, MSA로 아키텍처를 설계하면 마이크로 서비스가 미들웨어 서버에 등록되는 과정에서 1분간의 딜레이가 발생하여 1분동안 서비스를 이용할 수 없음=> 무중단 배포 도입무중단 배포서비스 장애와 배포의 부담을 최소화하기 위해 운영 중인 서비스를 중단하지 않고 신규 소프트웨어를 배포하는 기술종류1. 롤링 배포사용 중인 인스턴스 내에서 새 버전을 점진적으로 교체하는 것장점인스턴스마다 차례로 배포를 진행하기 때문에 상황에 따라 손쉽게 롤백이 가능많은 서버 자원을 확보하지 않아도 됨단점배포 도중 서비스 중인 인스턴스가 줄어들면 각각의 서버가 부담하는 트래픽 양이 증가할 수도 있음호환성 문제 발생2. 블루그린 배포구버전과 ..
[Infra] Spring Boot Pipeline 구축DockerfileFROM openjdk:{버전}LABEL authors="{작성자}"COPY build/libs/*.jar app.jarENTRYPOINT ["java", "-jar", "app.jar"] backend 폴더 내에 추가Pipeline멀티브런치를 이용해 분리했을 경우, Manged File > groovy file > pipeline jenkins 파일 생성해서 작성pipeline { agent any tools { gradle "gradle" } options { disableConcurrentBuilds() }tools: 파이프라인에서 사용할 도구를 정의, gradle 도구 사..
[Infra] React Pipeline 구축Dockerfile## 1. Build React AppFROM node:alpine as builderWORKDIR /appCOPY package*.json .RUN npm ci --forceCOPY . .RUN npm run build## 2. React를 Nginx로 ServeFROM nginx:latestRUN rm /etc/nginx/conf.d/default.confCOPY ./nginx.conf /etc/nginx/conf.dRUN ls -alWORKDIR /usr/share/nginx/htmlCOPY --from=builder /app/dist /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon..
[Infra] Nginx 설정Nginx 란?💡 오픈 소스 웹 서버 소프트웨어로, Apache와 같이 웹서버로 클라이언트 요청에 맞는 정적 파일을 응답해주는 Web Server 또는 요청을 다른 서버로 전달하는 리버스 프록시 역할을 수행특징높은 성능: 비동기 처리 및 이벤트 기반 아키텍처로 인해 높은 동시 연결 처리 가능가벼움 및 저용량 리소스 사용: 메모리 사용이 적음리버스 프록시 지원: 클라이언트 요청을 여러 서버로 분산정적 파일 및 동적 콘텐츠 서빙: 정적 파일을 빠르게 서빙하며, 필요시 백엔드 서버로 부터 동적 콘텐츠를 가져옴SSL/TLS 지원: 안전한 통신을 위해 SSL/TLS 프로토콜 지원(HTTP -> HTTPS)Nginx 설치nginx-proxy: Docker를 사용하여 nginx 리버스 ..
[Infra] Docker-Compose 를 통한 DB 구축환경 변수 파일: 보안이 필요한 user, password, database에 관한 정보를 저장# .env DB_USER={user이름} DB_PASSWORD={password} DB_DATABASE={database이름}MariaDBdocker-compose.ymlversion: '3'services: ... mariadb: image: mariadb:latest container_name: mariadb ports: - "3306:3306" volumes: - ./docker_volumes/mariadb:/var/lib/mysql restart: always networks: - infr..