본문 바로가기

전체 글

(49)
JVM 동작 과정 -JVM은 자바 바이트코드를 실행하는 가상 머신으로, 자바 프로그램이 운영체제 관계없이 동일하게 동작할 수 있도록 해주는 핵심 실행 엔진이다.-자바로 작성된 소스 코드는 컴파일 과정을 거쳐 .class확장자의 바이트코드로 변환된다. 사용 이유?-자바 어플리케이션을 운영체제와 무관하게 동일하게 실행할 수 있기 때문이다.-JVM은 각 운영체제별로 제공되는 별도의 구현체 위에서 바이트코드를 해석하거나 컴파일하여 실행하므로,소스 코드를 수정하지 않고도 다양한 환경에서 동일한 프로그램을 실행할 수 있다.-JVM은 단순히 바이트코드를 실행하는 것에 그치지 않고, 메모리관리, 예외처리, 보안, JIT 최적화 등 여러 실행환경 기능도 함께 제공하여 안정적인 프로그램 구동을 지원한다. 동작 방식1. 개발자가 .java파..
JVM, JDK, JRE JVM-JVM은 자바 프로그램을 실행하는 가상머신이다. -우리가 작성한 자바 코드를 컴파일 해서 자바 바이트코드(.class파일)로 변한하면 OS가 이해할 수 있는 기계어로 변환하여 실행한다. 핵심기능GC을 통해 사용하지 않는 메모리를 자동 해제한다.윈도우용 리눅스용 JVM이 각각 다르기 때문에 개발자는 OS에 상관없이 동일한 자바 코드를 작성할 수 있다.JRE-JER는 자바 프로그램을 실행하기 위해 필요한 최소한의 환경을 제공하는 라이브러리와 구성 요소들의 집합니다.-컴파일된 바이트코드가 실제로 구동될 수 있는 환경을 조성한다.-JVM + 자바 클래스 라이브러리 + 기타 설정 파일JDK-JKD는 자바 애플리케이션을 개발하기 위한 도구 모음이다.-JVM + JRE + 개발 도구를 모두 포함한다javac ..
로컬 개발에서 Docker배포까지 전체 흐름 정리 1. 들어가며개인 프로젝트나 팀 프로젝트를 하다 보면 이런 흐름을 자주 보게 된다.로컬에서 개발하고Docker로 컨테이너화하고서버에 배포해서외부 사용자가 접속할 수 있게 만든다 2. 먼저 핵심 결론부터로컬에서 기능 개발로컬에서 실행 및 테스트Dockerfile 작성Docker 이미지 빌드docker-compose로 여러 서비스 통합 실행컨테이너 기준으로 통합 테스트배포 서버 준비이미지 레지스트리에 업로드서버에서 이미지 pull 후 컨테이너 실행도메인, 포트, HTTPS, 리버스 프록시 연결외부 사용자가 서비스 접근수정 시 재빌드 → 재배포 → 운영개발한 애플리케이션을 Docker를 통해 “어디서든 같은 방식으로 실행 가능한 형태”로 만든 뒤, 그걸 외부 서버에 올려 서비스하는 것 3. 로컬 개발 단계3-..
스레드(Thread) 이해하기 스레드(Thread)스레드(Thread)란? 하나의 프로세스 안에서 독립적으로 실행되는 '작은 실행 단위'를 의미프로세스(Process)란? 시스템에서 실행중인 프로그램을 의미자바에서 스레드(Thread)자바에서 스레드는 '멀티 스레드(Multi-Thread)'를 지원하여 하나의 프로세스 안에 한 개 이상의 스레드를 지원하는 구조자바에서 멀티 스레드를 통해 '비동기식 및 병렬 애플리케이션'을 개발할 수 있음비동기식 및 병렬 애플리케이션?애플리케이션이 실행 중인 동안 사용자가 다른 작업을 수행할 수 있도록 함. 웹브라우저에서는 웹 페이지를 로드하는 동안 사용자가 다른 작업을 수행할 수 있음. 예를들어, 이메일을 보내는 애플리케이션은 이메일을 보내는 작업과 동시에 이메일을 읽는 작업을 수행할 수 있음블로킹(..
05-7 프록시와 안정적인 트래픽 오리진 서버와 중간 서버 : 포워드 프록시와 리버스 프록시오리진 서버(origin server)와 중간 서버자원을 생성하고 클라이언트에게 권한이 있는 응답을 보낼 수 있는 HTTP 서버클라이언트와 오리진 서버 사이에는 많은 중간 서버가 있을 수 있음대표적인 HTTP 중간 서버의 유형프록시 - 포워드 프록시게이트웨이 - 리버스 프록시프록시(proxy)클라이언트가 선택한 메시지 전달의 대리자로주로 캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능을 제공프록시는 '클라이언트의 심부름꾼 또는 대리인' 게이트웨이(gateway)오리진 서버(들)을 향하는 요청 메시지를 먼저 받아서 오리진 서버(들)에게 전달하는 문지기, 경비 역할게이트웨이는 일반적으로 클라이언트보다 오리진 서버(들)에 더 가까이 위치게이트웨이..
05-6 응용 계층 - HTTP의 응용 쿠키HTTP는 기본적으로 스테이트리스 프로토콜모든 HTTP 요청 메시지는 독립된 메시지로 간주그렇다면 클라이언트의 상태를 알고 있어야 구현이 가능한 '3일간 보지않기'와 같은 기능은 어떻게 구현되는 걸까?쿠기(cookie) : HTTP의 스테이트리스한 특성을 보완하기 위한 대표적 수단서버에서 생성되어 클라이언트 측에 저장되는 쌍 형태의 데이터이름과 값 이외에도 때로는(쿠키의 만료 기간과 같은) 추가 속성값도 가질 수 있음클라이언트는 서버로부터 받은 쿠키를 주로 브라우저에 저장쿠키 확인크롬 브라우저 [개발자 도구]를 열고 [Application]-[Storage]-[Cookies] 서버 -> 클라이언트 쿠키 전송 : Set-Cookie 헤더클라이언트 -> 서버 쿠키 전송 : Cookie 헤더예) 응답메시..
05-5 응용 계층 - HTTP의 기초 DNS와 URI/URL도메인 네이밍과 DNS도메인 네임(domain name)호스트의 IP주소와 대응되는 문자열 형태의 호스트 특정 정보도메인 네임과 그에 대응하는 IP 주소는 네임서버(name server), DNS 서버(DNS server)에서 관리네임 서버에 '특정 도메인 네임을 가진 호스트의 IP 주소가 무엇인지' 질의'도메인 네임 풀이(resolve)', '리졸빙(resolve + ing)' : 도메인 네임에 대응되는 IP 주소를 알아내는 과정도메인 네임의 계층적 구조도메인 네임은 점(.)을 기준으로 계층적으로 분류, 일반적으로 3~5단계 정도로 구성최상단: 루트 도메인루트 도메인의 하부 도메인: 최상위 도메인(TLD, Top-Level Domain)'com, net, org, kr(대한민국),..
05-4 전송 계층 - TCP와 UDP TCP와 UDP의 목적과 특징포트를 통한 프로세스 식별네트워크 패킷을 주고받는 프로세스에는 포트 번호 할당IP주소와 포트번호의 조합을 통해 '특정 호스트가 실행하는 특정 프로세스'를 식별포트를 통한 프로세스 식별은 전송 계층(TCP, UPD)의 주된 목적TCP와 UDP헤더에 모두 포트 번호 필드인 송신지 포트 번호와 수신지 포트 번호를 포함16비트로 표현할 수 있는 포트 번호의 총 개수는 2의 16승, 즉 65536개0번부터 65536번까지의 포트 번호를 할당포트 번호의 범위에 나뉘는 포트의 세 종류 잘 알려진 포트0번부터 1023번까지가장 대중적으로 사용되는 애플리케이션을 위한 포트 번호범용적으로 사용되는 프로토콜이 주로 사용하는 포트 번호 목록 등록된 포트1024번부터 49151까지애플리케이션 프로토..