- aws docker 주요용어2024년 07월 19일
- chantleman
- 작성자
- 2024.07.19.:57
AWS 특징
AWS(Amazon Web Services)는 Amazon.com에서 제공하는 클라우드 컴퓨팅 서비스 입니다.
AWS는 다양한 IT 리소스를 클라우드에서 제공하여 기업이나 개발자가 필요할 때 언제든지 컴퓨팅 파워, 스토리지, 데이터베이스, 머신 러닝, 인공지능 등의 기능을 사용할 수 있게 합니다. 주요 서비스는 다음과 같습니다.
1. EC2 (Elastic Compute Cloud):
가상 서버를 제공하여 사용자가 원하는 사양 으로 컴퓨팅 파워를 사용할 수 있습니다.
2. S3 (Simple Storage Service):
대용량 데이터 저장을 위한 객체 스토리지 서 비스입니다.
3. RDS (Relational Database Service):
MySQL, PostgreSQL, Oracle 등 다양한 데이터베이스를 관리형 서비스로 제공합니다.
4. Lambda:
서버리스 컴퓨팅 서비스로, 코드를 실행하기 위해 서버를 관리할 필 요 없이 이벤트 기반으로 코드를 실행할 수 있습니 다.
5. VPC (Virtual Private Cloud):
가상 네트워크 환경을 생성하여 AWS 리소스를 더 안전하게 사용할 수 있게 합니다.
6. DynamoDB:
빠르고 확장 가능한 NoSQL 데이터베이스 서비스입니다.
7. CloudFront:
콘텐츠 전송 네트워크(CDN) 서비스로, 전 세계 사용자에게 빠르 고 안전하게 콘텐츠를 배포할 수 있습니다.
이 외에도 AI/ML, 데이터 분석, IoT, 개발자 도구, 보안 서비스 등 수많은 서비스와 도 구를 제공합니다. AWS는 유연성과 확장성을 갖춘 클라우드 인프라를 제공하여 기업이 인프라 비용을 절감하고 효율성을 높일 수 있게 돕습니다.
Docker 특징
Docker는 소프트웨어를 컨테이너(Container)라는 표준화된 단위로 패키징, 배포, 실행 할 수 있게 하는 오픈 소스 플랫폼입니다. Docker를 사용하면 개발자가 로컬 환경에서 작성한 애플리케이션을 동일한 환경에서 배포하고 실행할 수 있어, 일관성 있고 신뢰 성 있는 소프트웨어 배포가 가능합니다.
Docker의 주요 개념
이미지 (Image):
• 애플리케이션과 그 환경을 포함한 실행 파일의 읽기 전용 템플릿입니다.
• 필요에 따라 애플리케이션이 실행될 때 컨테이너를 생성합니다.
• 예: 특정 버전의 Ubuntu, Python, Nginx 등을 포함한 이미지.
컨테이너 (Container):
• 이미지를 실행한 상태로, 실제로 애플리케이션이 동작하는 환경입니다.
• 가벼운 가상 머신처럼 작동하며, 필요한 라이브러리와 종속성을 포함하 여 애플리케이션을 실행합니다.
• 독립적인 환경을 제공하므로 다른 컨테이너와 격리된 상태로 동작합니다.
Dockerfile:
• 이미지를 만들기 위한 설정 파일입니다.
• 이미지 생성 과정에서 필요한 명령어를 작성해 놓은 파일로, 빌드 시 이 파일을 참조하여 이미지를 생성합니다.
• 예: 베이스 이미지 설정, 애플리케이션 코드 복사, 필요한 패키지 설치 명령어 등을 포함합니다.
Docker Hub:
• Docker 이미지의 공개 저장소입니다.
• 사용자가 이미지를 업로드하고, 다른 사용자는 이를 다운로드하여 사용 할 수 있습니다.
• 공식 이미지, 사용자 생성 이미지 등이 있습니다.
Docker의 주요 장점
일관된 환경 제공:
• 개발, 테스트, 배포 환경에서 동일한 환경을 제공하여, 환경 차이로 인한 문제를 최소화합니다.
신속한 배포 및 확장:
• 컨테이너 기반으로 애플리케이션을 배포하므로 빠르고 쉽게 확장할 수 있습니다.
자원 효율성:
• 가상 머신에 비해 경량화되어 자원을 효율적으로 사용할 수 있습니다.
• 필요할 때만 자원을 사용하여 비용 절감에 도움이 됩니다.
이식성:
• 한 번 작성한 Docker 이미지를 어디서나 동일하게 실행할 수 있어, 클라 우드 환경, 온프레미스 환경 등 다양한 환경에서 유연하게 동작합니다.
Docker 사용 예시
개발 환경 설정:
• 개발자가 각자의 로컬 환경에서 동일한 설정으로 애플리케이션을 개발할 수 있습니다.
지속적 통합 및 배포(CI/CD):
• Jenkins, GitLab CI/CD 등과 통합하여 자동화된 빌드, 테스트, 배포 파 이프라인을 구축할 수 있습니다.
마이크로서비스 아키텍처:
• 각 서비스가 독립적으로 배포 및 확장될 수 있도록 지원하여, 마이크로 서비스 아키텍처 구현에 유리합니다.
Docker는 소프트웨어 개발과 배포를 간소화하고, 일관성과 확장성을 제공하여 현대의 많은 개발 및 운영 팀에서 널리 사용되고 있습니다.
Jenkins 특징
Jenkins는 오픈 소스 자동화 서버로, 주로 지속적 통합(Continuous Integration, CI) 및 지속적 배포(Continuous Delivery, CD) 파이프라인을 구축하는 데 사용됩니다. Jenkins는 다양한 플러그인을 지원하여 소프트웨어 개발 프로세스의 자동화를 돕습니 다. 이를 통해 코드 변경 사항이 자동으로 빌드되고, 테스트되며, 배포될 수 있습니다.
Jenkins의 주요 개념
파이프라인(Pipeline):
• 소프트웨어 프로젝트의 빌드, 테스트, 배포 과정을 정의한 일련의 자동 화된 단계입니다.
• Jenkins Pipeline은 코드로 정의되어 Jenkinsfile이라는 파일에 저장됩니다.
• 단계별로 순차적으로 또는 병렬로 작업을 수행할 수 있습니다.
잡(Job):
• Jenkins에서 실행되는 개별 작업 단위입니다.
• 특정 빌드, 테스트, 배포 작업을 정의하며, 필요에 따라 여러 잡을 연결 하여 파이프라인을 구성할 수 있습니다.
• 예: 코드 빌드, 유닛 테스트 실행, 애플리케이션 배포 등.
노드(Node):
• Jenkins가 잡을 실행하는 머신을 의미합니다.
• 마스터(Master) 노드는 Jenkins 서버 자체이며, 슬레이브(Slave) 노드는 작업을 실행하기 위해 마스터에 의해 관리되는 추가적인 머신입니다.
• 노드를 통해 분산 빌드와 테스트를 수행할 수 있습니다.
플러그인(Plugin):
• Jenkins의 기능을 확장하는 모듈입니다.
• 다양한 도구와 통합하여 빌드, 테스트, 배포 파이프라인을 구축할 수 있 게 합니다.
• 예: Git, Maven, Docker, Slack, Jira 등의 플러그인.
Jenkins의 주요 기능
자동화된 빌드 및 테스트:
• 코드 변경 시 자동으로 빌드하고, 테스트를 수행하여 문제를 조기에 발 견할 수 있습니다.
• 개발 주기의 효율성을 높이고, 신뢰성을 향상시킵니다.
지속적 통합(CI):
• 개발자가 변경한 코드를 자주 병합하고 빌드 및 테스트하는 과정입니다.
• 코드 변경의 문제를 빠르게 발견하고 해결할 수 있습니다.
지속적 배포(CD):
• 애플리케이션을 자동으로 배포하여, 새로운 기능을 사용자에게 빠르게 제공할 수 있습니다.
• 배포 프로세스를 자동화하여, 배포 속도와 안정성을 향상시킵니다.
분산 빌드:
• 여러 노드를 사용하여 병렬로 빌드를 실행함으로써 빌드 시간을 단축할 수 있습니다.
• 대규모 프로젝트에서도 효율적으로 빌드 작업을 처리할 수 있습니다.
Jenkins 사용 예시
기본 CI/CD 파이프라인 구축:
• 코드 변경 사항을 GitHub에 푸시하면 Jenkins가 자동으로 빌드, 테스트, 배포를 수행하는 파이프라인을 설정할 수 있습니다.
다양한 테스트 자동화:
• 유닛 테스트, 통합 테스트, 성능 테스트 등을 자동화하여 코드 품질을 보장합니다.
다양한 환경에 배포:
• 개발, 스테이징, 프로덕션 환경에 자동으로 애플리케이션을 배포합니다.
• 환경별 설정을 관리하고, 배포 프로세스를 표준화할 수 있습니다.
모니터링 및 알림:
• 빌드 및 배포 상태를 모니터링하고, 문제 발생 시 이메일, Slack 등의 알림을 통해 팀에 통보할 수 있습니다.
Jenkins는 소프트웨어 개발 과정의 자동화를 통해 효율성과 품질을 높이는 데 중요한 역할을 합니다. 이를 통해 개발팀은 더 빠르고 안정적으로 소프트웨어를 배포할 수 있 게 됩니다.
React_Spring_Node.js 특징
React 특징
• Javascript 사용하는 프론트엔드 라이브러리
• 레고 조각으로 다양한 형태를 완성하듯, 컴포넌트로 웹사이트를 구현
• 현존하는 웹사이트 대부분을 구현할 수 있음
• 고객과 소통하면서 업무하는 것을 좋아하는 사람에게 추천
• 활용 기업 : 페이스북, 인스타그램 등
Spring 특징
• Java를 사용하는 백엔드 개발 프레임워크
• React, Node.js와 비교해 난이도가 있음
• 전공자나 개발 공부를 해봤던 사람에게 추천
• 활용 기업 : 은행, 정부 관련 기관, 페이팔, 이베이
Node.js 특징
• Javascrpit를 사용한 백엔드 런타임
• 활용 가능한 라이브러리가 풍부
• 비교적 빠르게 서버를 구축할 수 있음
• Javascript가 프론트엔드에 많이 쓰이는 언어이기 때문에, 프론트엔드 개발로 쉽게 진출 가능
• 빠른 성장을 원하는 사람에게 추천
• 활용 기업 : 슬랙, 노션, 넷플릭스, 링크드인, 쿠팡, 네이버, 카카오, 대부분의 스타트업 등
Git 특성
Git은 분산 버전 관리 시스템으로, 소프트웨어 개발 프로젝트에서 코드 변경 이력을 관 리하고 협업을 쉽게 할 수 있게 해줍니다. Linus Torvalds에 의해 2005년에 개발된 Git은 속도, 데이터 무결성, 그리고 분산형 워크플로우를 중점으로 설계되었습니다. Git 은 코드의 변경 사항을 추적하고, 다양한 브랜치를 활용하여 동시에 여러 기능을 개발 하고 병합할 수 있는 강력한 도구입니다.
Git의 주요 개념
리포지토리 (Repository):
• 프로젝트의 파일들과 변경 이력을 저장하는 데이터베이스입니다.
• 로컬 리포지토리와 원격 리포지토리로 나뉘며, 로컬 리포지토리는 개발 자의 컴퓨터에, 원격 리포지토리는 GitHub, GitLab, Bitbucket 같은 서버 에 저장됩니다.
커밋 (Commit):
• 파일의 변경 사항을 저장하는 스냅샷입니다.
• 각 커밋은 고유한 해시값으로 식별되며, 이전 커밋과의 차이를 기록합니다.
브랜치 (Branch):
• 독립적으로 작업을 진행할 수 있는 분기입니다.
• 새로운 기능 개발이나 버그 수정을 위한 별도의 작업 공간을 제공합니다.
머지 (Merge):
• 브랜치에서 작업한 내용을 다른 브랜치에 병합하는 과정입니다.
• 주로 새로운 기능을 개발한 브랜치를 메인 브랜치에 병합합니다.
푸시 (Push):
• 로컬 리포지토리의 변경 사항을 원격 리포지토리에 업로드합니다.
• 협업을 위해 다른 팀원들과 변경 사항을 공유합니다.
풀 (Pull):
• 원격 리포지토리의 변경 사항을 로컬 리포지토리로 가져옵니다.
• 최신 상태로 유지하기 위해 사용합니다.
클론 (Clone):
• 원격 리포지토리를 로컬 리포지토리로 복제합니다.
• 새로운 작업을 시작하기 위해 원격 리포지토리의 복사본을 만듭니다.
Git의 주요 명령어
리포지토리 초기화:
git init
리포지토리 클론:
git clone https://github.com/username/repository.git
변경 사항 확인:
git status
파일 추가:
git add filename
커밋 생성:
git commit -m "Commit message"
브랜치 생성 및 체크아웃:
git checkout -b new-branch
푸시:
git push origin branch-name
풀:
git pull origin branch-name
머지:
git checkout main
git merge branch-name
브랜치 삭제:
git branch -d branch-name
Git의 장점
분산형 시스템:
• 모든 개발자가 전체 리포지토리의 복사본을 가지므로, 중앙 서버의 장애에도 로컬 작업이 가능합니다.
빠른 속도:
• 대부분의 작업이 로컬에서 이루어지므로, 속도가 빠릅니다.
효율적인 협업:
• 브랜치를 사용하여 동시에 여러 기능을 개발하고, 코드 리뷰와 병합 과정을 통해 효율적으로 협업할 수 있습니다.
강력한 이력 관리:
• 모든 변경 사항이 기록되어 과거의 상태로 쉽게 돌아갈 수 있으며, 변경 이력 을 정확히 추적할 수 있습니다.
광범위한 도구 및 호스팅 서비스 지원:
• GitHub, GitLab, Bitbucket 등의 호스팅 서비스를 통해 다양한 추가 기능과 통합을 제공합니다.
Git은 소프트웨어 개발에서 필수적인 도구로, 코드의 버전 관리를 효율적으로 수행하고, 개 발자 간의 협업을 원활하게 만들어 줍니다.
Git Bash 특징
Git Bash는 Windows 환경에서 Git을 사용하기 위한 도구로, Git 명령어와 Bash 쉘 명령어를 실행할 수 있게 해주는 명령줄 인터페이스입니다. Git Bash는 Git for Windows 패키지의 일부로 제공되며, Linux 환경에서 사용하는 Bash 쉘과 유사한 환 경을 Windows 사용자에게 제공합니다.
Git Bash의 주요 기능
Git 명령어 지원:
• Git Bash를 통해 git clone, git pull, git commit, git push등 Git 명령어 를 사용할 수 있습니다.
• 이를 통해 버전 관리 작업을 효율적으로 수행할 수 있습니다.
Bash 쉘 명령어 지원:
• ls, cd, pwd, rm, cp등 Linux Bash 쉘에서 사용되는 명령어를 Windows 에서 사용할 수 있습니다.
• 파일 시스템 탐색, 파일 및 디렉터리 관리 등의 작업을 명령줄 인터페이 스에서 수행할 수 있습니다.
스크립팅:
• Bash 스크립트를 작성하고 실행할 수 있습니다.
• 반복적인 작업을 자동화하거나, 배포 스크립트 등을 작성할 때 유용합니다.
Git Bash 설치 방법
1. Git for Windows 공식 사이트로 이동합니다.
2. 최신 버전의 설치 파일을 다운로드합니다.
3. 다운로드한 설치 파일을 실행하여 설치를 진행합니다.
4. 설치 과정에서 기본 설정을 사용하거나, 필요에 따라 설정을 변경합니다.
5. 설치가 완료되면, 시작 메뉴 또는 바탕 화면에서 Git Bash를 실행할 수 있습니다.
Git Bash 사용 예시
리포지토리 클론:
git clone https://github.com/username/repository.git
브랜치 생성 및 체크아웃:
git checkout -b new-branch
파일 추가 및 커밋:
git add . git commit -m "Add new feature"
원격 리포지토리에 푸시:
git push origin new-branch
디렉터리 탐색:
cd path/to/directory
Git Bash의 장점
일관된 개발 환경 제공:
• Windows에서 Linux와 유사한 명령줄 환경을 제공하여, 다양한 플랫폼에서 일 관된 개발 환경을 유지할 수 있습니다.
강력한 스크립팅 기능:
• Bash 스크립트를 통해 복잡한 작업을 자동화하고, 반복적인 작업을 효율적으 로 처리할 수 있습니다.
Git 통합:
• Git 명령어와 Bash 쉘 명령어를 하나의 터미널에서 사용할 수 있어, 버전 관 리와 시스템 관리 작업을 동시에 수행할 수 있습니다.
Git Bash는 Windows 사용자에게 친숙한 명령줄 환경을 제공하여 Git을 효과적으로 사용할 수 있게 하며, 개발 프로세스를 더욱 효율적으로 만드는데 중요한 역할을 합니다.
728x90'도커 aws' 카테고리의 다른 글
도커 (0) 2024.11.22 오라클 docker 설치 (0) 2024.07.01 다음글이전글이전 글이 없습니다.댓글