가상화란? 하나의 물리적인 컴퓨터 하드웨어를 사용하여 여러 개의 가상적인 환경을 생성하고 실행하는 기술이나 방법을 말합니다. 이러한 가상 환경은 가상 머신(VM, Virtual Machine)이라고도 불리며, 각 가상 머신은 독립된 운영체제와 응용 프로그램을 실행할 수 있습니다. 하나의 물리머신 상에서 복수의 시스템(게스트 OS)을 동시 운영한다. 가상화 이전에는 하나의 애플리케이션만 운영할 수 있었음. 가상화 이후에는 애플리케이션들이 OS위에 바로 올라가는 것이 아니라 각기 다른 가상 머신 위에 올라갑니다. 그럼 어떻게 다른 OS들을 사용할 수 있을까? 각각의 OS는 ‘커널’이라는 것이 존재하는데, 커널은 하드웨어 리소스를 관리하고, 명령어를 해석하는 역할을 합니다. 하지만, OS마다 명령어를 해석하는..
객체 지향 프로그래밍의 장점 (실세계를 보고 경험을 바탕으로!) 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다는 장점이 있습니다. 마치 컴퓨터 부품을 갈아 끼울 때, 해당하는 부품만 쉽게 교체하는 것처럼요. 또한 코드의 재 사용을 통해 반복적인 코드를 최소화합니다. 객체(Object) 모든 실재하는 대상을 의미합니다. 객체는 속성과 기능으로 나누며 각각은 변수(variable)와 메서드(Method)로 정의하고 있습니다. [ 메서드 오버라이딩과 메서드 오버로딩 ] 1. 메서드 오버라이딩 (Method Overriding) 상속받는 클래스 메서드의 내용을 재정의 2. 메서드 오버로딩 (Method Overroading) 같은 이름의 메서드를 중복하여 정의하는 것 메서드 오버로딩의 예시 - 생성자 ..
VPC (Virtual Private Cloud)란?? 독립적인 가상의 네트워크 공간으로 사용자의 설정에 따라 자유롭게 구성할 수 있는 공간을 의미합니다. 우리가 AWS의 EC2 인스턴스를 생성할 때를 다시한번 생각해볼까요? 아무렇지 않게 아래 그림과 같이 VPC가 default 설정 되어있는 채로 인스턴스를 생성합니다. 하지만, 우리는 VPC와 서브넷을 선택하여 EC2 인스턴스를 생성할 수 있습니다. 그렇다면 왜 VPC 구성을 해야할까요?? Vitual Private Cloud(VPC) 위 그림과 같이 VPC가 없다면 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결됩니다. VPC를 적용하면 위 그림과 같이 VPC별로 네트워크를 구성할 수 있고 각각의 VPC에 따라 다르게 네트워크 설정을 줄 ..
서브넷과 서브넷 마스크 서브넷은 말그대로 부분 네트워크라는 뜻이다. 내부 네트워크와 외부 네트워크를 명확하게 구분하고 부분적으로 나눈 부분 네트워크를 의미한다. 이러한 서브넷을 만들 때 사용되는 것이 바로 서브넷마스크이다. 💡 즉, 서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 분리하는 역할을 한다. IPv4 IPv4 주소는 4개의 바이너리 8자리 수로 이루어져 총 32비트로 구성되어 있다. 예를 들어 192.168.0.1은 [1100 0000] . [1010 1000] . [0000 0000] . [0000 0001]로 표현한다. IP 구성 IP주소는 네트워크 부분과 호스트 부분으로 나누어진다. 하나의 로컬 네트워크에서는 IP 주소의 네트워크 부분은 같아야하고, 호스트 부분은 ..
클라우드 컴퓨팅 인터넷으로 가상화된 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가 각각의 단계에 대한 스크립트 작성의 필요성을 없애주지는 않는다. 하지만 ..
먼저 로드밸런싱이란?? 서버가 처리해야 할 업무 또는 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리 많은 트래픽을 대처하는 방법 Scale Up : 기존 서버의 성능을 높인다. (비용이 증가) Scale Out : 똑같은 성능을 가진 서버를 여러대 증산시킨다. (트래픽 분산) 여기서 Scale Out을 하기 위해서 무조건 해야 하는 일이 로드밸런싱이다. Scale Out의 장점 서버는 갑자기 다운될 수 있고 배포를 하게 된다면 다운이 될 수 있다. 여러대의 서버를 두게 된다면 하나의 서버가 다운되더라도 다른 서버가 있기 때문에 정상적인 서비스가 가능하다. (무중단 배포) 로드밸런싱 네트워크 트래픽을 균등하게 배포하는 방법으로 많은 양의 트래픽을 처리하기 위해 서버 앞단에 존재하는 소..