다이나믹 프록시 ( Dynamic Proxy ) 💡 목적 Proxy 패턴 디자인 패턴에는 프록시 패턴이라는 것이 있는데 이 프록시 패턴은 어떤 특정 로직 전•후에 부가적인 작업을 진행하기 위한 방법이다. 다만 이 프록시 패턴을 구현을 통해 위 코드에서 문제점을 확인할 수 있다. 다른 구현체가 생성될 때 마다. ProxyHero와 같은 새로운 프록시 클래스가 매번 생성돼야 한다. fight()와 defend() 메서드 모두 같은 기능을 하고 있음에도 불구하고 중복된 코드를 작성해야 한다. 이 문제를 해결하기 위해 JDK에는 java.lang.reflection.Proxy (프록시 팩토리)가 런타임 시점에 Dynamic 하게 인터페이스에 대한 구현체를 생성해주는 기능을 제공한다. 📖 사용 예시 publ..
가상화 단일 컴퓨터의 하드웨어 리소스들을 가상머신(VM) 이라고 하는 다수의 가상 컴퓨터로 분할할 수 있도록 하는 기술 운영체제 (Operating System) 하드웨어와 소프트웨어 자원을 운영 관리하는 프로그램 Mac ,Linux ,Window 특권 명령 (privileged instruction) 시스템 요소들과 소통할 수 있는 명령 ( OS 만 가능 ) OS 는 특권명령 때문에 하나의 하드웨어에서 하나만 가능함. 일반 프로그램은 특권 명령이 필요 없기 때문에 많은 프로그램을 동시 사용 가능하다. Bare-Metal ( ↔ 가상화 ) 일반적인 컴퓨터 처럼 하나의 하드웨어에 직접 OS가 설치된 상태 가상화의 역사 1세대 : 완전 가상화 (Fully Emulated) 모든 시스템 리소스가 에뮬레이터 안..
샤딩 수평 분할과 수직 분할 수직 분할 이름에 맞게 수직으로 테이블을 나누는 것이다. 특정 컬럼을 다른 테이블로 쪼개서 저장하는 것을 의미한다. 제 3정규화와 다르게 이미 정규화가 된 테이블을 나누는 것이다. 자주 쓰는 특정 컬럼을 분리하여, 성능을 향상할 수 있다. 수평 분할 테이블을 로우를 기준으로 수평으로 분리하는 것을 의미한다. Key 값을 기반으로 여러 곳에 분산하여 저장한다. 샤딩 이란? 위 수평 분할과 같은 개념으로서, 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산 저장하는 방법을 의미한다. 장점 로우의 개수가 줄어 스캔 범위가 줄면서 쿼리의 속도가 빨라진다. Scaling Out 이 가능하다. 장애가 샤드 단위로 발생함. 단점 프로그래밍 및 운영적인 복잡도가 높아진다. 데이..
JVM( Java Virtual Machine ) 한 문장으로 설명하는 JVM OS에 종속적이지 않은 바이트 코드를 각 OS에 맞게 컴파일하고 실행하는 가상 머신 JVM은 클래스 파일(바이트 코드)을 메모리에 적재하고 실행(네이티브 코드로 컴파일)한다. 자바 언어에는 의존하지 않고 바이트 코드에 의존하는데 그렇기 때문에 바이트 코드로 컴파일될 수 있는 모든 언어(코틀린, 스칼라..)는 JVM위에서 실행될 수 있다. 자바 언어가 OS에 독립적일 수 있는 이유도 이 플랫폼에 종속적인 JVM이 중간단계로 있어 Java언어를 OS에서 분리하기 때문이다. JVM은 Java언어에 대해 알고 있지 않고, 바이트코드인 class 만 알고 있다. 바이트코드로 변환될 수 있는 모든 언어는 JVM위에서 실행 가능하다. j..
- Total
- Today
- Yesterday
- 수직 분할
- 객체 풀
- pool
- Clean Architecture
- 뾰족함
- 육각형 아키텍처
- Object Pool
- 컴포짓 패턴
- 내부 단편화
- 장애 해결기
- 메모리 파편화
- 동적 타입 언어
- 정적 타입 언어
- SpringBoot 2.2
- RestAssured
- 메모리 단편화
- java
- Session
- multimap
- 세션 불일치
- 동적 디스패치
- 클린 아키텍처
- Sticky Session
- pass by value
- pass by reference
- 외부 단편화
- 수평 분할
- ATDD
- OOP
- Memory Fragmentation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |