가상화란? 하나의 물리적인 컴퓨터 하드웨어를 사용하여 여러 개의 가상적인 환경을 생성하고 실행하는 기술이나 방법을 말합니다. 이러한 가상 환경은 가상 머신(VM, Virtual Machine)이라고도 불리며, 각 가상 머신은 독립된 운영체제와 응용 프로그램을 실행할 수 있습니다. 하나의 물리머신 상에서 복수의 시스템(게스트 OS)을 동시 운영한다. 가상화 이전에는 하나의 애플리케이션만 운영할 수 있었음. 가상화 이후에는 애플리케이션들이 OS위에 바로 올라가는 것이 아니라 각기 다른 가상 머신 위에 올라갑니다. 그럼 어떻게 다른 OS들을 사용할 수 있을까? 각각의 OS는 ‘커널’이라는 것이 존재하는데, 커널은 하드웨어 리소스를 관리하고, 명령어를 해석하는 역할을 합니다. 하지만, OS마다 명령어를 해석하는..
VPC (Virtual Private Cloud)란?? 독립적인 가상의 네트워크 공간으로 사용자의 설정에 따라 자유롭게 구성할 수 있는 공간을 의미합니다. 우리가 AWS의 EC2 인스턴스를 생성할 때를 다시한번 생각해볼까요? 아무렇지 않게 아래 그림과 같이 VPC가 default 설정 되어있는 채로 인스턴스를 생성합니다. 하지만, 우리는 VPC와 서브넷을 선택하여 EC2 인스턴스를 생성할 수 있습니다. 그렇다면 왜 VPC 구성을 해야할까요?? Vitual Private Cloud(VPC) 위 그림과 같이 VPC가 없다면 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결됩니다. VPC를 적용하면 위 그림과 같이 VPC별로 네트워크를 구성할 수 있고 각각의 VPC에 따라 다르게 네트워크 설정을 줄 ..
클라우드 컴퓨팅 인터넷으로 가상화된 IT 리소스를 서비스로 제공하는 것을 의미합니다. 클라우드 컴퓨팅에서 가상화하여 서비스로 제공하는 대상은 서버, 플랫폼, 소프트웨어이입니다. 클라우드 서비스 하면 대표적으로 3가지인 IaaS, PaaS, SaaS가 있는데, 분야별 특성별로 나누어지기 때문에 특징과 차이점을 분명히 알고 있어야 한다고 생각하여 포스팅을 해보려고 합니다. As a Service “서비스로 제공되는” 이라는 뜻을 가진 aaS는 일반적으로 더 중요한 것에 집중할 수 있도록 타사에서 제공하는 클라우드 컴퓨팅 서비스를 의미합니다. 클라우드 유형마다 관리해야 할 On-Promise 인프라가 점점 더 줄고 있습니다. 온프레미스(On-premise) 란?? 기업의 서버를 클라우드 같은 원격 환경에서 운..
아키텍쳐 설계한 내용을 바탕으로 개발 어플리케이션을 배포를 할 때, 당연하게 AWS EC2와 Docker를 이용해서 배포를 진행하고 있었다. 하지만?? Docker를 사용해야 하는 이유에 대해 동료 개발자가 질문을 했을 때 대답을 할 수 없었다. 당연하게 사용하고 있었기 때문이다. 그래서 Docker의 특징인 컨테이너가 무엇인지 가상머신과의 차이점은 무엇인지, 그에 따른 특장점에 대해 알아보려고 한다. 기존 서버 관리의 문제점 전용 서버 방식 기존 서버를 이용한 배포에서는 서버 하나에 여러 개의 프로그램을 설치하는 것도 번거로운데, 포트끼리 충돌이 일어날 가능성이 높다. 만약 아래와 같이 테스트 서버에서 개발을 진행하고 운영 서버로 개발 내용을 이식을 한다고 가정을 해보자. 실제로 운영 서버에 테스트 서..
Jenkins란??? 다른 일상적인 개발 작업을 자동화할 뿐 아니라 파이프라인(Pipeline)을 사용해 소스코드 리포지토리에 대한 지속적인 통합과 지속적인 전달 환경을 구축하기 위한 방법을 제공하는 툴 그래서 뭐냐?? CI/CD 지속적인 통합, 배포를 가능하게 해주는 툴 CI/CD CI 하루에 여러 번 그들의 코드를 버전 제어 저장소에 체크하는 방법이다. 오류를 빠르고 쉽게 찾을 수 있게 해 주며, 자동화된 빌드 CD 버그 수정, 기능 및 구성 변경 사항을 프로덕트에 안정적으로 신속하고 지속적으로 배포할 수 있도록 해주는 프로세스 빠른 버그 픽스가 가능하며 빠르게 배포 가능하다. 그렇다고 모든 과정을 대신해주냐?? Jenkins가 각각의 단계에 대한 스크립트 작성의 필요성을 없애주지는 않는다. 하지만 ..