본문 바로가기

전체 글43

관리형 데이터베이스 서비스 데이터베이스를 자체적으로 관리할 수 있지만 몇 가지 잠재적인 단점과 문제가 존재한다. 1. 가용성을 확장하고 관리하는 것의 어려움 - 데이터베이스이기 때문에 읽기/쓰기 다중 작업의 동시 발생을 대비해야한다. 따라서 동일한 구성을 사용하고 동일한 데이터베이스 파일로 작업하고, 동시에 실행 중인 다중 데이터베이스가 필요할 수 있다. 이를 위해선 하나의 동일한 데이터베이스에서 작동하는 것처럼 동기화가 보장되어야 한다. 2. 성능 문제 - 트래픽 급증시 성능 문제가 발생할 수 있다. 성능 문제를 해결하기 위해선 데이터베이스 확장을 시스템을 구축 해야한다. 3. 백업과 보안 문제 - 데이터의 안정을 보장하고 허가 없이 엑세스할 수 없도록 보장해야한다. 또한 일부 데이터가 손실되는 경우를 대비하여 이전 백업으로 롤.. 2023. 1. 9.
Docker 다중 컨테이너 배포 도커 컴포즈를 이용하면 로컬 머신에서 다중 컨테이너를 쉽게 실행할 수 있다. 다른 포트에서 수신 대기하는 컨테이너와 함께 도커 컴포즈를 사용하여 동일한 머시에서 백엔드, 데이터베이스, 프론트엔드 컨테이너를 모두 실행 할 수 있다. 하지만 배포하여 리모트 머신으로 이동시켜 컨테이너 당 하나의 각각 다른 머신을 사용하게 된다면 상황이 복잡해진다. 따라서 컴포즈 파일은 동일한 머신에서 다중 컨테이너를 관리하고 실행해야 컴포즈 파일의 장점을 가져갈 수 있다. 때문에 우리가 우선 다중 컨테이너 배포를 위해 해야 할 일은 동일한 머신에서 컨테이너를 실행시키도록 해야한다. 다행히 AWS ECS의 경우 동일한 태스크에 컨테이너를 추가하면 동일한 머신에서의 실행이 보장된다. 그래도 여전히 ECS는 도커 네트워크를 생성하.. 2023. 1. 4.
docker 배포 AWS EC2에 직접 배포 ec2 접속 sudo yum update -y docker 설치 : sudo amazon-linux-extras install docker docker 실행 : sudo service docker start 리모트 머신에 도커 설치 후 로컬 이미지를 리모트 머신으로 가져와야 한다. 1. 소스 코드를 리모트 머신에 복사하는 방식 - 리모트 머신에서 불필요한 작업이 증가 2. 로컬 머신에서 미리 이미지 빌드 후 빌드된 이미지를 리모트 머신에 배포하는 방식 - Docker hub 등을 이용 1) 로컬 머신에서 이미지 빌드 후 Docker hub에 푸쉬 2) 리모트 머신에서 docker run 또는 docker pull 후 docker run 명령어를 통해 이미지 pull 받기 이러한.. 2022. 12. 31.
Docker compose 1. 도커 컴포즈 yaml 파일 구성 version: 파일 규격 버전을 적습니다. 파일의 규격에 따라 지원하는 옵션이 달라지는데, “3”이라만 적으면 3으로 시작하는 최신 버전을 사용한다는 의미입니다. services: 실행하려는 컨테이너들을 정의합니다. 컴포즈에서는 컨테이너 대신 서비스라는 개념을 사용합니다. image : 빌드할 이미지를 작성한다. volumes: 컨테이너에서 사용할 볼륨, 바운드 마운트를 작성한다. run 명령과 작성법은 같지만 run 명령어의 경우 바운트 마운트 경로는 절대경로만 작성이 가능한 반면 컴포즈에서는 상대경로 또한 가능하다. 명명된 볼륨의 경우 다른 컨테이너에서도 사용할 수 있기 때문에 services 구문과 같은 레벨에 volumes: 을 사용하여 볼륨을 명시해줘야 한.. 2022. 11. 18.
Docker DB 컨테이너 - 데이터 유지 DB 컨테이너 경우 컨테이너가 종료되더라도 기존 저장된 DB 데이터들은 어딘가에 저장하고 있어야 한다. 이를 위해 볼륨을 사용하여 호스트 머신에 DB 데이터를 저장하여 컨테이너가 종료되더라도 데이터를 유지시킬 수 있도록 한다. MongoDB 이미지 레퍼런스를 보면 Mongo 컨테이너는 데이터를 /data/db 경로에 저장한다고 나와있다. 이 컨테이너 경로를 명명된 볼륨과 매핑하여 컨테이너를 실행하여 DB 데이터를 볼륨을 통해 지속적 데이터로 유지시킨다. ex) docker run --name mongodb -v {볼륨명}:/data/db --rm -d mongo - 보안과 엑세스 방지 MongoDB 이미지는 두 가지 환경 변수를 지원한다. 1. MONGO_INITDB_ROOT_USERNA.. 2022. 10. 23.
도커 컨테이너의 네트워크 통신 1. 컨테이너와 월드 와이드 웹의 통신 2. 컨테이너와 호스트 머신의 통신 - 도커 컨테이너와 로컬 호스트머신이 통신하는 특별한 주소 : host.docker.internal -> 도커는 특수 도메인을 호스트 머신의 IP주로 변환하여 인식한다. 3. 컨테이너와 컨테이너의 통신 - docker container inspect {container name} -> IPAddress -> 컨테이너 IP 주소 확인 -> 연결 하지만 직접 컨테이너의 IP를 확인하여 주소를 적는 일은 번거롭다. 때문에 도커는 컨테이너 네트워크라는 걸 만들어 위의 번거로운 문제를 해결하게 해준다. - 네트워크 생성 docker network create {custom network name} - 네트워크에 연결하여 container .. 2022. 10. 14.