<2024년 백엔드 챌린지 4월 특강을 수강하면서 필기한 내용입니다>
도커는 소프트웨어를 컨테이너라는 표준화된 단위로 패키징하여, 다양한 컴퓨팅 환경에서 일관되게 실행할 수 있도록 하는 기술이다.
각 컨테이너는 코드, 런타임, 시스템 도구, 라이브러리 등 애플리케이션 실행에 필요한 모든 것을 포함한다.
프로덕션 환경과 테스트 서버를 일치시키기 위해.
모던 웹 개발에서는 애플리케이션의 일관된 실행 환경을 보장하고, 개발과 배포의 효율성을 높이는 것이 중요하다.
도커는 "작동하지 않음"의 문제를 크게 줄여주며, 애플리케이션의 이식성을 향상시킨다.
프로젝트의 생명주기는 개발자가 회사에 있는것보다 길다! 내 로컬환경에서 구동만 하다가 배포를 배우면 sw 기본적인 개발 사이클을 풀로 경험할 수 있다.
도커 컨테이너의 생명주기에는 생성(create), 시작(start), 중지(stop), 삭제(remove) 등의 단계가 있다.
docker run: 새 컨테이너를 생성하고 실행.
docker ps: 실행 중인 컨테이너 목록을 보여줌.
docker stop: 실행 중인 컨테이너를 중지.
docker rm: 컨테이너를 삭제.
GitHub Actions는 GitHub에서 제공하는 CI/CD 도구로, CI/CD툴따로없이 GitHub와 연동이 되는 것이 장점임. 중앙저장소(깃허브 레포)에 끊임없이 변경사항을 merge하는것이 가능하다.
Jenkins는 전통적인 CI/CD 도구 강자이다. 최근에는 GitHub Actions와 같은 클라우드 기반 도구로의 이전 사례가 늘고 있긴 하지만, 이전부터 Jenkins를 잘 쓰고 있었다면 굳이 바꾸지 않는 회사들도 많다.
기술 스택을 선택할 때 새로운 기술이 제대로 동작하는지 확인하는 테스트 과정이 중요하며, 이는 비즈니스 가치에 직결되기 때문에.
(새 기술도 잘 돌아가냐가 곧 돈)
(배포속도가 다르다고하는데 앱 사용하는데 체감차가 크진 않다고 함)
isolation : (메모리) 땅따먹기.
리소스의 분리를 통해 비용 절감과 안정성을 높일 수 있다.
density: 컨테이너를 사용해서 하나의 서버에 여러 서비스들을 빽빽하게 올리는 걸 가능하게 한다.
서버를 빵빵한걸 써도 되지만 비용문제가 있음. 우리가 가진 리소스와 자원은 한정적이다.