
대체로 HTTP 웹 서버를 줄여서 웹 서버라고 한다. 말그대로 HTTP나 HTTPS를 지원하는 서버이다. 웹 서버는 이미지나 HTML파일, 자바스크립트 파일, CSS파일과 같은 정적 리소스를 지원하기 위해 만들어졌다. 따라서 웹 서버는 정적 컨텐츠를 제공하기 위한 용도로 사용된다. 여기서 정적 리소스는 모든 사용자에게 똑같이 보여지는 파일로써 어떤 클라이언트로부터 요청이 오든지 상관없이 항상 같은 파일을 제공한다. 웹 서버와 WAS의 큰 차이점은 동적 컨텐츠를 제공하는 유무이다. 항상 똑같은 파일을 제공하는 정적 컨텐츠에서 동적인 컨텐츠를 처리하기 위해 WAS가 존재한다. 보통 동적 컨텐츠가 요구되는 요청이 클라이언트로부터 왔을 때에는 웹 서버가 WAS에게 요청을 전달하지만 최근 WAS는 웹 서버의 역할..

프록시 객체 - JPA에서 프록시 객체는 객체 탐색을 자유롭게 하기 위해서 필요한 시점에 쿼리를 날려 Entity화 하는 기술이다. - JPA는 프록시 객체라는 기술을 이용해 연관된 객체를 처음부터 데이터베이스에서 조회하지 않고, 실제 사용하는 시점에 SELECT 쿼리를 통해 조회할 수 있다. - JPA는 연관된 객체를 가져오는 시점에 따라 지연로딩(LAZY), 즉시로딩(EAGER) 두 가지 옵션을 제공하며 연관관계 매핑 어노테이션에서 FetchType 옵션을 통해 설정할 수 있다. 즉시로딩(EAGER), 지연로딩(LAZY) 1. 지연로딩(LAZY) 1) find 등을 통해 Member 엔티티를 가져온다. 그러면 그 안에 주문리스트가 있을 것이고, 주문리스트는 프록시 객체로 저장되어 있다. 2) 그 후에..

영속성 컨텍스트 관련 주요 용어 [Entity] 테이블과 매핑되는 객체이다. [EntityManagerFactory] EntityManager를 생성해주는 factory 성질을 갖는 Bean이다. Thread-safe하게 구현되어 있어서 여러 쓰레드가 동시에 접근해도 무방하다. [EntityManager] Entitiy와 관련된 일들을 담당한다. 즉, Entity를 저장하고, 수정하고, 삭제하고, 조회하는 (CRUD) 등 Entity와 관련된 모든 일을 처리한다. Thread-safe 하지 않기 때문에 EntitiyManagerFactory를 통해서 계속해서 새로운 EntityManager를 생성하도록 해서 단일 쓰레드가 EntitiyManager에 접근하도록 한다. 참고) JPA는 인터페이스일 뿐이며 ..

Garbage Collection 이란?가비지 컬렉션은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능이다. JVM에서 제공하는(JVM 중에서도 Execution Engine) 주요 기능 중 하나이다. 참고로 가비지 컬렉션은 JVM만의 기능은 아니다. Unreachable ObjectStack frame이 Stack에서 pop되면 해당 메소드가 참조하던 레퍼런스도 사라진다. 이때 heap에는 객체 데이터가 그대로 남게 되는데, 이를 unreachable object라 한다. 이러한 unreachable object는 가비지 컬렉터의 대상이 된다. 가비지 컬렉션 주요 과정가비지 컬렉터가 스택의 모든 변수를 스캔하면서 각각 어떤 객체를 참..

Bean Scope Spring에는 6가지 bean scope이 있지만 기본적으로 Bean을 Singleton으로 관리한다. IoC 컨테이너 생성 시점에 Bean을 생성하는 이유(Bean Scope이 싱글톤일때) You can generally trust Spring to do the right thing. It detects configuration problems, such as references to non-existent beans and circular dependencies, at container load-time. Spring sets properties and resolves dependencies as late as possible, when the bean is actually cr..

Runtime Data Areas는 JVM이 운영체제로부터 할당받는 메모리 영역을 의미한다. JVM의 클래스 로더가 메모리에 바이트코드를 올리면, JVM의 Execution Engine은 JVM 메모리에 올라온 바이트코드들을 명령어 단위로 하나씩 가져와서 기계어로 변환시킨다. 변환된 기계어는 JVM의 메모리구조(Runtime Data Area)의 각 영역에 배치되며 GC와 함께 실행된다. Runtime Data Areas (5개) * 오라클(과거의 썬 마이크로시스템즈)의 HotSpot JVM 기준 모든 Thread 공유 1) Method(Static) Area Method Area, Class Area, Code Area, Static Area 라고도 불린다. JVM의 Execution Engine(실행..

자바는 OS와 독립적으로 실행시킬 수 있다. 그 이유는 JVM이 OS에 의존적이기 때문인데, 즉, OS마다 다른 JVM이 존재하기 때문이다. C/C++는 링커, 로더를 포함한 운영체제 바로 위에서 직접적으로 실행되므로, 빠르고 가볍다. 하지만 개발에 있어서 그만큼 메모리 회수 등 개발자가 신경써야 할 부분이 많다. 또한 C/C++ 등의 전통적인 언어는 컴파일 플랫폼(CPU 아키텍처 16bit, 64bit 등 및 OS)에 따라 자료형형의 크기가 변한다. 그래서 윈도우에서 컴파일한 C/C++파일은 리눅스에서 안 돌갈 수도 있다. JVM은 이러한 문제를 근본적으로 해결한다. 자바 소스코드(.java)가 자바 컴파일러(javac.exe)를 거치고 나면, 자바 바이트코드(.class)를 생성하는데, 이 자바 바..

스프링 프로젝트를 진행하면서 느꼈던 것은 그 목표를 분명히 알고 사용하지 않으면 그 가치를 제대로 얻기 힘들다는 것이였다. 스프링이 제공하는 기술들을 갖다 사용하면 단순히 스프링을 적용한 것 뿐이지 스프링의 장점이 활용되었다고 보기 힘들다. 따라서 스프링의 목적과 왜 만들어졌는지를 파악하고 스프링이 제공해주는 혜택을 제대로 누려서 활용해야 한다는 생각이 들었다. '스프링 프레임워크'란? Spring의 정의는 다음과 같다. 자바 엔터프라이즈급 개발을 쉽게 해주는 '애플리케이션 프레임워크' 위 스프링 정의를 보면 쉽게 와닿지 않을 것이다. 따라서 스프링의 정의에서 설명하고 있는 애플리케이션 프레임워크에 대해 알 필요가 있다. 애플리케이션 프레임워크? 애플리케이션 프레임워크를 이해하기 전에 프레임워크가 무엇인..
- Total
- Today
- Yesterday
- go
- container
- rolling update
- spring
- Linux
- db
- jvm
- Stream
- ci/cd
- 쿠버네티스
- 카프카
- Kubernetes
- K8s
- CICD
- GitOps
- Non-Blocking
- docker
- LFCS
- github actions
- 컨트롤러
- 우분투
- Java
- kafka
- helm
- golang
- argocd
- 코틀린
- Controller
- RDB
- ubuntu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |