각종 공연을 예매하고 알림을 받을 수 있는 서비스를 만들고 있었다. 여기서 예매한 공연의 시작 하루 전 회원들에게 일괄적으로 알림을 보내주는 기능을 구현했다. 카카오톡 알림을 보내려 했지만 사업자 번호가 있어야 한다고 해서 아쉬운데로 sms 전송으로 대체했다. sms push 알림은 naver cloud에서 제공하는 sens를 사용했다. coolsms가 제일 보편적으로 많이 쓰이는 것 같던데 훨씬 저렴하게 사용할 수 있었다. (지금은 사업자만 가능하도록 네이버에서 막음.. 스펨문제) 아무튼 위 기능을 구현하려고 이것저것 찾아보다 스케줄러와 배치에 대해 알게 되었고 현재 진행중인 프로젝트에 스프링 배치를 적용시키기로 했다. 스프링 배치는 어떤 작업에 쓰일까? 예약 시간에 광곳어 메시지 발송, 결제 정산 작..
Docker swarm docker swarm은 컨테이너를 위한 분산 환경 클러스터링 및 스케줄링 도구이다. Docker는 단일 호스트, Docker swarm은 다중 호스트 기반의 컨테이너 기반 애플리케이션 관리 도구이다. "컨테이너화 된 애플리케이션에 대한 자동화된 관리 및 제어를 수행하는 도구" swarm mode를 초기화(init)하여 사용 주요 기능 DNS 서버를 통해 서비스 검색 기능 구현 가능 서비스용 포트를 외부 Load Balancer에 연결하여 부하 분산 구현 각 노드는 TLS(Transport Layer Security) 상호 인증 및 암호화를 통해 노드 간 통신에 대한 보안 기능 구현 Docker엔진과 통합된 multi host기반의 분산 Cluster 운영 서비스에 대한 멀티 호스..
기존에 개발하던 프로젝트에 docker-compose를 적용시켜보았다. 추가로 Nginx를 띄워 3개의 spring server에 로드밸런싱도 해보았다. 그 전에 docker compose 실행 종료 명령어에 대해 정리해보았다. 도커는 기본적으로 캐싱을 수행하기 때문에 docker compose를 실행했을 때 수정 사항이 적용되지않는 경우가 종종 있었다. 따라서 아래와 같은 명령어로 실행, 종료를 권장한다. 실행: docker compose up --force-recreate 종료: docker compose down --rmi all Spring boot + MariaDb application.yml spring: datasource: driver-class-name: org.mariadb.jdbc.D..
Docker Compose 란? 응집력 있는 애플리케이션으로 함께 작동하는 여러 컨테이너를 실행하려는 로컬 개발 및 테스트 환경을 위해 설계된 도구 docker compose yaml코드는 여러 개의 docker run 실행과 유사하며 네트워크, 볼륨 등을 한번에 생성할 수 있다. docker compose로 생성된 컨테이너들은 독립된 네트워크로 구성되므로 컨테이너 간 통신이 쉽다. Docker file 작성 -> docker-compose.yml 작성 -> docker compose up 장점 서로 다른 OS환경이라도 동일한 환경구성이 가능하다. 동일한 환경을 사용하기 때문에 개발환경에 이슈가 발생해도 팀간 소통이 쉽다. 복잡한 환경도 YAML 코드로 스크립트화 할 수 있기 때문에 자동화가 가능하다. ..
IaC (Infrastructure as Code, 코드형 인프라)가 필요한 이유 커맨드 기반의 인프라 구성 시 사용자 실수 등의 인적 오류 가능성이 높음. 설치 순서와 상호 연관성 등을 고려하여 각종 라이브러리와 함께 복잡한 명령어들을 고민하게 되는데 코드형 인프라로 해결 가능. 수정사항은 언제든 코드 변경을 통해 가능하다. 따라서 개발 업무 목적을 이루는 것에만 온전히 집중할 수 있다. IaC는 탄력성, 확장성, 반복성을 부여하게 되어 눈송이 서버가 아닌 동일한 환경을 보유한 서버(컨테이너)를 수십~수백대를 운영, 관리하게 해준다. 눈송이 서버: 실제 운영 환경은 다양한 서버를 갖고 있다. 개발서버, 테스트서버, 운영서버 등이 있는데 운영을 하다보면 여러가지 변경 사항이 있다. 이때 똑같은 setup..