728x90

개발공부 55

Udemy : Docker & Kubernetes 실전 가이드 (8)

Laravel & PHP 도커화 1. Target 설정 애플리케이션 컨테이너 : PHP 인터프리터, Nginx 웹 서버, MySql 데이터베이스 유틸리티 컨테이너 : Composer : npm 유사, 써드파티 패키지를 설치하는 관리자, Laravel 설치 Laravel Artisan : 데이터베이스 마이그레이션 등 npm : Laravel의 뷰에서 일부 자바스크립트 코드가 필요한 경우 2. Nginx - nginx 포트 80 노출이 기본값 역할 : 요청을 받고 그 요청을 PHP 컨테이너로 송신하는 역할 공식 이미지 작업 방법 : ./nginx/nginx.conf:/etc/nginx.conf:ro 3. PHP - PHP 공식 + Laravel 언어 버젼 : 7.4-fpm-alpine ~ nginx 구성을 ..

Udemy : Docker & Kubernetes 실전 가이드 (7)

유틸리티 컨테이너 노드를 예로 들면 비어있는 프로젝트 폴더에서 npm init 명령어와 함께 package.json 생성 후 종속성 추가 ~ 프로젝트를 생성하기 위해 호스트 머신에 설치해야하는 부가 도구를 도커화한 것이 유틸리티 컨테이너 1. 컨테이너에서 명령을 실행하는 다양한 방법 노드 공식 이미지를 docker run 하면 인터렉티브 모드가 아니기 때문에 중지된다. docker run -it -d node + docker exec : 실행 중인 컨테이너 내 특정 명령을 실행할 수 있다. ~ 도커파일에 지정된 명령 외 특정 명령을 실행한다. docker exec 실행 중인 컨테이너 이름 ~ ex) docker exec -it hopeful_spence npm init - 계속 프로세스와 연결되려면 인터..

Udemy : Docker & Kubernetes 실전 가이드 (6)

Docker Compose 1. 기본 개념 - 다수의 docker build와 docker run을 하나의 구성 파일로 정리할 수 있든 명령 셋이다. - 도커 컴포즈 파일 작성이 가장 첫 번째 단계 Service(Containers) : 다중 컨테이너 애플리케이션을 구성하는 컨테이너 - 터미널에서 도커 명령으로 할 수 있는 모든 것을 다 할 수 있다. 2. Compose 파일 만들기 docker-compose.yaml ~ 들여쓰기 사용가능 https://docs.docker.com/compose/compose-file/ Overview docs.docker.com 1) 버전 설정하기 : 문서를 참고해 컴포즈의 최신 버전을 사용한다. 2) services : yaml 파일은 들여쓰기로 종속성을 표현하기 때..

Udemy : Docker & Kubernetes 실전 가이드 (5)

다중 컨테이너 애플리케이션 구축 데이터베이스 컨테이너, 백엔드 서버 컨테이너, 프론트엔드 컨테이너 ~ 일반적으로 웹 애플리케이션을 만드는 방법 데이터베이스 컨테이너 : 컨테이너가 변경되더라도 담겨있는 내용은 보존되어야 한다 ~ Mongo 이미지는 로그인 방식을 지원하기 때문에 이를 이용해 데이터를 보존 할 수 있다. 백엔드 컨테이너 : 마찬가지로 로그 데이터 등이 보존되어야 한다. = 컨테이너는 계속 동작해야 하기 때문에 호스트 머신에서 리팩토링하는 소스 코드가 즉시 컨테이너에 반영되는 방식을 취한다. 프론트엔드 컨테이너 : 컨테이너 재실행 없이 코드의 즉시 반영 1. 데이터베이스 도커화 - MongoDB의 경우 27017 포트를 디폴트로 제공한다. 2. 백엔드 도커화 : 포트 넘버 노출에 유의하기 3...

Udemy : Docker & Kubernetes 실전 가이드 (4)

네트워킹 : (교차) 컨테이너 통신 어플리케이션 분석 - 엔드포인트 : 요청에 대한 응답 서비스를 사용할 수 있는(호출하는) 지점 1. 컨테이너와 로컬 호스트 머신 통신 + 웹과 통신 - 컨테이너 내부에서 웹과 통신하는 API는 별도의 설정이 필요없다. - 컨테이너에 데이터 베이스를 담지 않고 호스트 머신의 DB와 통신할 때 요청 주소를 로컬 호스트가 아닌 host.docker.internal을 사용한다. ~ 로컬에서 실행 중인 웹서버와 통신할 때도 사용 가능 -> 컨테이너에서 볼 수 있는 로컬 호스트 머신의 IP주소로 변환된다. 2. 다른 컨테이너와 통신 - 모든 컨테이너는 한 가지 역할에만 집중하는 것이 좋다. ~ 노드 웹 API 어플리케이션, 몽고 DB 컨테이너 데이터 베이스 컨테이너는 도커 허브에..

Udemy : Docker & Kubernetes 실전 가이드 (3)

이미지와 컨테이너의 데이터 관리하기 1. 데이터 카테고리/ 다양한 종류의 데이터 이해하기 - 실행 중인 어플리케이션은 코드 변경을 해선 안되기 때문에 이미지는 읽기 전용으로 기능한다 - 임시 사용자 데이터는 메모리에만 저장하는 등 일시 저장한다 ~ 읽기 전용으로 다룰 필요가 없다. -> 컨테이너 레이어(부가 레이어)에 저장한다. 읽기 - 쓰기 권한을 가지고 임시 데이터를 다루는 레이어. - 영구 사용자 데이터(ex 사용자 계정) : 컨테이너가 중지/ 제거되더라도 보존되어야 하는 데이터 -> 컨테이너와 볼륨에 저장한다. 2. 데이터 관리를 위한 도커화 - 임시 데이터의 경우 컨테이너에 저장되므로 로컬 머신에서 볼 수 없다 - 로컬 머신에서 코드를 변경한 경우 이미지를 새로 빌드하고 이를 기반으로 한 컨테이..

Udemy : Docker & Kubernetes 실전 가이드 (2)

이미지와 컨테이너1. 이미지 vs 컨테이너컨테이너 : 애플리케이션, 웹사이트, 노드 서버, 전체 환경 등을 모두 포함하는 패키지 -> 소프트웨어 단위 실행이미지 : 템플릿, 컨테이너의 청사진 -> 코드, 도구와 런타임을 포함 ~ 한 이미지에 여러 컨테이너를 만들 수 있다 2. 사전에 만들어진 이미지 가져오기 : Dockerhub.comex) 터미널에서 docker run node : node 공식 이미지 가져오기 docker ps -a : 생성한 모든 컨테이너 조회docker run -it node : 노드 대화형 세션 열기 ~ 인터렉티브 노드 터미널에 접속할 수 있다. -> 이미지는 컨테이너에 필요한 모든 논리와 모든 코드를 보관하는 데 사용된다. 3. DockerFile을 이용해 커스텀 이미지 빌드1..

Udemy : Docker & Kubernetes 실전 가이드 (1)

도커란 무엇인가? 왜 사용해야 할까? - 도커란 컨테이너 기술, 컨테이너를 생성하고 관리하기 위한 도구이다. SW 개발에서 컨테이너란, 코드 패키지를 의미하며 그 코드를 실행하기 위한 종속성과 도구를 포함하고 있다. 어떤 애플리케이션을 컨테이너로 배포한다고 하는 것은 구성 파일과 런타임, 그리고 실행하는 데 필요한 기타 도구를 포함하고 있다는 뜻이다. 함수형 프로그래밍의 목적과 같이, 항상 같은 동일한 동작과 결과를 제공한다는 장점이 있다. 왜 사용하는가 - 똑같은 개발환경을 갖기 위해, 특정 버전을 컨테이너에 고정할 수 있으므로 코드가 항상 정확한 버전으로 실행되는 것을 보장한다. 프로젝트를 전환할 때 버전을 제거하고 재설치하는 번거로움을 줄일 수 있다. 솔루션 : 가상 머신/ 가상 운영체제 ~ 도커와..

AWS S3를 활용해 프로젝트 구현 : 상품 & 프로필 서비스 이미지 스토리지로 활용하기

도입 취지 파일 스토리지로 사용할 서비스를 찾던 도중, 이미지 스토리지로 많이 활용한다는 AWS S3 서비스에 대해 알게 되었고, 다음과 같은 장점을 근거로 도입하기로 했다 장점 확장성: S3를 사용하면 거의 무제한의 데이터를 저장하고 검색할 수 있으므로 빠르게 확장할 수 있는 기능이 필요한 애플리케이션에 적합하다. 보안: S3는 서버 측 암호화, ACL(액세스 제어 목록) 및 버킷 정책을 비롯한 다양한 보안 기능을 제공하여 데이터를 보호하다. 사용 용이성: S3는 사용하기 쉽고 다른 AWS 서비스와 원활하게 통합되므로 확장 가능하고 안정적인 애플리케이션을 구축하려는 개발자에게 적합하다. 구현 기간 02. 28 ~ 03. 03 실행 환경 - Spring boot 3.02 - Java 17 - Gradle..

로드밸런싱/ 스케일 업/ 스케일 아웃 : 서버의 분산 시 의사 결정에 대해

1. 로드 밸런싱 + ( vs 오토 스케일링 ) 참고 레퍼런스 : https://aws.amazon.com/ko/what-is/load-balancing/ 로드 밸런싱이란 무엇인가요? - 로드 밸런싱 알고리즘 설명 - AWS 로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법입니다. 최신 애플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비 aws.amazon.com https://mozi.tistory.com/603 로드 밸런싱이란, 애플리케이션을 지원하는 리소스 풀 전체, 서버 전체에 네트워크 트래픽을 균등하게 분산하여 배포하는 방식이다. 로드 밸런싱을 사용하게 되면, 다음과 같은 장점이 있다. 1) 가용성 : 트래픽을 분산하지 않고 특정..

개발공부/CS💻 2023.03.15
728x90