본문 바로가기

분류 전체보기37

가상 머신과 하이퍼바이저에 대해 알아보자. 가상 머신 (Virtual Machine, VM)  자체 컴퓨팅 리소스와 OS를 갖춘 가상 컴퓨팅 환경을 가상 머신이라 부른다. 각 가상 머신들은 같은 서버 위에 있을지라도 별도의 시스템처럼 동작한다.생성된 가상 머신을 게스트 서버, 가상 머신들이 구동되는 서버를 호스트 서버라고 부른다. 가상화 기술 등장 이후, 한 개의 물리 서버를 두 개 이상의 가상 서버로 동작시킬 수 있게 되었다. 덕분에 서버 리소스를 낭비하지 않고 효율적으로 사용할 수 있다.  물리 서버에 가상 서버를 만들기 위해서는 다음과 같은 과정이 필요한데 한번 살펴보자. 가상 서버 생성 요청을 하이퍼바이저에 전달.하이퍼바이저가 새로운 가상 서버(VM) 생성.물리 서버의 컴퓨팅 리소스(CPU, 메모리, 스토리지, 네트워크)를 각 가상 서버에.. 2024. 10. 28.
Gradle은 무엇인가? 의존성 관리는 왜 필요한가? Gradle Gradle은 강력한 빌드 도구다. Apache Ant와 Maven의 장점을 결합하면서 성능을 향상한 빌드 자동화 시스템이다. 대표적으로 변경된 부분만 빌드할 수 있고, 병렬 처리를 통해 빌드 시간을 단축시킨다는 이점이 있다. 빌드 도구는 Ant -> Maven -> Gradle 순으로 발전되어 왔다.  의존성 관리는 왜 필요한가?의존성은 프로젝트가 필요로 하는 외부 라이브러리를 의미한다. 예를 들어, Java 기반 웹 애플리케이션을 개발할 때는 Spring, Hibernate 등의 라이브러리가 필요하다. 이때 Gradle은 프로젝트의 라이브러리 의존성을 선언적으로 관리하고 필요한 라이브러리를 자동으로 다운로드한다.  Gradle에서 의존성 관리하기Gradle에서 의존성을 관리하면 외부 라이.. 2024. 10. 25.
Public IP와 Private IP는 왜 분리될까? IP (Internet Protocol)인터넷상에서 서버나 네트워크, PC 등 호스트를 구별하는 주소가 IP 주소다. IP 주소는 네트워크에 연결된 각 호스트(PC나 스마트폰 등)에 최소 1개가 필요하다. 단, 특정 호스트와 IP 주소는 고정적이지 않을 수 있으며 개인용 네트워크에서는 동적으로 할당되는 것이 일반적이다. 그러나 서버는 고정된 IP 주소를 사용해야 사용자가 안정적으로 접속할 수 있다. IPv4 주소192.168.1.1IPv4는 약 43억 개의 IP 주소를 제공하지만 현재 주소 부족 현상이 발생하고 있으며 이에 따라 IPv6로 전환이 권장되고 있다. 그러나 막상 실무에서는 여전히 IPv4를 사용 중이다. IPv4의 경우, 4개의 옥텟(octet)으로 구분된 10진수 숫자(각각 0부터 255까.. 2024. 10. 25.
final에 대한 이해 finalfinal 키워드는 변수, 메서드, 또는 클래스에 대한 변경 불가능 하도록 하는 데 사용된다.final 키워드를 사용하면 그 요소는 한 번 할당되거나 정의된 후 변경될 수 없다.   변수에 final 사용지역 변수final로 선언된 지역 변수는 한 번만 값을 할당할 수 있다. 초기화 이후에는 그 값이 변경될 수 없다.  필드 (멤버 변수) 객체의 필드에 final을 사용하면 객체가 생성될 때 필드를 초기화해야 하며, 그 이후에는 그 필드의 값을 변경할 수 없다.  파라미터 메서드의 파라미터를 final로 선언하면, 메서드 안에서 파라미터의 값을 변경할 수 없다. 이는 메서드 안에서 파라미터가 참조하는 데이터의 무결성을 유지한다.  메서드에 final 사용 final로 선언된 메서드는 하위 클래.. 2024. 10. 24.
Virtual Private Cloud와 Private Subnet, Public Subnet의 차이점은 무엇인가? VPC(Virtual Private Cloud) VPC는 논리적으로 격리된 사용자 전용 가상 네트워크다. 쉽게 말해 AWS 리소스들이 위치하는 네트워크 망이다. VPC를 이용하면 리소스를 물리적으로는 다른 데이터센터에 위치시키더라도, 동일한 사설망 IP 대역에 연결해 서로 통신할 수 있다. 이는 특정 데이터센터에 문제가 생기더라도 서비스 전체에 영향을 최소화할 수 있다.  Subnet Subnet은 VPC 내의 네트워크를 더 작은 단위로 나누는 개념이다. 각 서브넷은 단일 가용 영역(AZ)에 위치한다. 서브넷을 사용하는 주요 이유는 보안 강화 및 네트워크의 브로드캐스트 영역을 축소해 통신 성능을 향상하기 위함이다. AWS에서 기본으로 생성되는 VPC에는 여러 개의 퍼블릭 서브넷이 포함되어 있으며, 서브넷.. 2024. 10. 24.
static 변수와 static 메서드를 왜 쓸까? static static이란 '정적인', '고정적인'이라는 사전적 의미를 가진다. Java 관점에서 해석하면 '클래스의' 또는 '공통적인'이라는 의미로 사용된다. static 멤버는 메모리에서 메서드 영역에 위치한다.   static 변수 static 변수는 클래스 변수라고도 불리며, 클래스의 모든 인스턴스에서 공통된 값을 유지해야 할 때 사용한다. 클래스가 메모리에 로딩될 때 생성되며 프로그램이 종료될 때까지 메모리에 유지된다. 객체를 생성하지 않고도 '클래스이름.변수명'으로 호출할 수 있다.    static 메서드 static 메서드는 클래스 메서드라고도 불린다. 인스턴스 변수를 사용할 수 없기 때문에, 인스턴스와 관계없는 기능을 제공하는 메서드를 static 메서드로 정의한다. 예를 들어, 유틸리.. 2024. 10. 24.