이 글은 3달 전쯤? 단순한 계기로 노션에 작성해둔 글을 수정해서 올려놓은 글입니다. 글 내용도 갑작스럽게 끝나는 느낌이 있어서 수정을 하는 와중에도 이렇게까지 다룰만한 내용인가, 올려놔도 되나? 하는 의구심도 들었는데요. 그냥 이 사람은 그렇게 이해한 상태이구나 정도의 가벼운 마음으로 봐주시길 바랍니다. ㅎㅎ JPA에서는 특정 Column을 별도의 영역에 정의하는 2가지를 방법을 제공한다.하나는 여러 column(field)을 하나의 embedded type으로 정의하여 객체에 포함하는 방법이고 다른 하나는 별도의 추상 클래스를 만들어 변수를 정의하고 @MappedSuperclass로 상속시키는 방법이다. 언급된 이 2가지 방식은 어떠한 차이가 있고 특정 column을 정의할 땐 어느 방법을 선..
Prometheus 개요 Prometheus는 오픈소스 기반의 모니터링 시스템으로 Service discovery pattern을 통해 데이터 수집대상을 발견하고 주기적으로 풀링하여 매트릭 데이터를 수집합니다. 수집된 매트릭 정보들은 로컬 디스크에 있는 시계열 데이터베이스에 저장되어 Prometheus의 도메인 특화 언어인 PromQL을 통해 빠르게 검색할 수 있습니다. Prometheus는 매트릭 수집을 위한 서버나 컨테이너 구성이 불필요(Single host)하며, 클라이언트가 매트릭 푸시를 위해 CPU를 사용할 필요도 없습니다. (Metric Push를 통한 응답 병목이나 서버 부하를 예방합니다.) 부가적으로 중앙 집중식 구성 방식과 관리 콘솔을 제공하기에 설치나 사용이 매우 쉽습니다. Promet..
추가로 정리 중 RabbitMQ Message Queue 및 Message 보존 설정 RabbitMQ server가 종료 후 재기동하면, 기본적으로 Queue는 모두 제거되게 된다. 이를 막기 위해서는 Queue를 생성할 때 Durable 옵션을 True로 설정하여야 하며, 메시지의 경우 PERSISTENT_TEXT_PLAIN 옵션을 주어야 Message가 보존된다. MessageProperties.PERSISTENT_TEXT_PLAIN 추가적으로 Queue에 있는 Message를 보존하는 속성으로 delivery-mode라는 것이 존재하는데, 기본 값은 1으로 메모리에서 메시지를 관리하는 상태가 되며, 2로 설정할 경우 RabbitMQ가 디스크에 메시지를 영속화시킨다. 금융 거래 이벤트와 같이 비즈니스..
추가로 정리 중 AMQP Frame Structure AMQP Spec에서는 객체 지향 개념과 유사하게 Class와 Method라는 것을 사용하여 AMQP Command를 정의한다. Class는 기능의 범위를 정의한다. Method는 각 Class 내부에서 서로 다른 작업을 수행하는 작업 단위이다. // example) Connection.Start {class}.{method} basic class : (메시지의 송신, 수신, 대기열의 접근, 클라이언트의 종료, 시작, 거부 등) channel class : (채널 생성, 종료, 중지) exchange class : (분기 설정, 생성, 삭제, 연결 등) queue class : (메시지 큐 생성, 삭제, 설정, 해제 등) tx class : (트랜잭션..
요즘 글을 거의 쓰지 못하고 있어서 어떤 주제로 쓸지 고민하던 중에 나의 근황에 대해서 정리하게 되었다. 직장을 가지고 지속적으로 글을 쓴다는 것은 정말 힘들고 존경스러운 일이라는 것을 다시 한번 느끼는 계기가 되었다. 학습 근황 이제 백엔드 공부를 시작한 지 10여 개월 정도가 지났고 학습일지도 차근차근 쌓이고 있다. 회사에 다니면서는 귀찮거나 피곤하다는 이유로 제대로 하지 못한 날도 있었는데, 이러한 유혹을 잘 뿌리치는 것이 학습을 지속함에 있어 중요한 것 같다. 회사에 다니면서 간단한 단축 URL 서비스를 만들어보았다. 회사에서 기존 프로젝트를 유지보수하다가 신규 프로젝트로 넘어가게 되었었다. 넘어갈 신규 프로젝트의 기술 스택을 듣고 살짝 경험해보기 위해서 구상하고 진행하였다. 이를 통해 Sprin..
메인 이미지는 https://wiki.openjdk.java.net/display/zgc/Main 에서 가져왔습니다. 최근 ZGC에 대한 질문을 받았으나 대답하지 못해 아쉬웠던 상황이 있었습니다. 완벽하게 이해하고 쓰는 글이 아니라 학습을 위해 정리하는 글이기 때문에 잘못된 내용이 있을 수 있으니 그 점 양해 부탁드립니다. ZGC Heap Memory 공간이 커지더라도 S-T-W 시간이 증가하지 않는 특징을 가진 GC이며 각각의 객체를 단일 세대로써 관리되며, 객체들은 G1 GC와 유사한 Region 방식으로 관리된다. 해당 GC는 Java 11부터 Preview로 추가되었으며, 15에서 Production Ready 상태가 되었다. ZGC의 목표 G1 보다 처리량이 15% 이상 떨어지지 않으면서, S-..
점층적 생성자 패턴? 개발을 하다 보면 특정 클래스의 상태, 선택적인 매개변수가 많아질수록 점층적인 모양의 생성자들이 만들어지게 되는 경우가 있습니다. 그렇기에 코드에서 필수적인 매개변수 생성자부터 선택적인 변수 1.... N개 생성자까지 5개 이상의 생성자를 보게 될 수도 있습니다. public Sample(Long id, String name) { //... } public Sample(Long id, String name, Int age) { //... } public Sample(Long id, String name, Int age, String profile) { //... } // ~~~ public Sample(Long id, String name, Int age, String profile..
일반적으로 Class의 Instance를 생성하는 방법은 public Constructor를 사용하지만, 그와 별도로 Static factory method를 사용할 수 있습니다. 이러한 메서드는 instance를 반환하는 단순한 형태나 별도 로직을 포함하는 형태를 지니게 됩니다. Effective Java에서는 이를 통해 여러 장점과 단점이 존재한다고 하는데. 하나하나 정리해보았습니다. 1. Class를 생성하는 행위, 특성에 대해 이름을 부여할 수 있다. 객체의 Constructor 그 자체와 넘기는 Parameter 만으로는 해당 객체의 특성이나 의미를 자세히 알아내기가 어렵고 이를 이해하기 위해 API 문서를 더 확인해야 할 수 있습니다. 이때 Static factory method의 Naming..
이 글은 특정 구현에 종속되는 내용을 제외한 이론 위주의 정리 글입니다. AOP (Aspect-Oriented Programming) 란? AOP는 프로그래밍 개발 사상 중 하나이며, Spring Framework을 구현한 주요한 개념입니다. 저는 이 개념을 애플리케이션 내부의 컴포넌트들에 존재하는 비즈니스 로직이 아닌 보일러 템플릿 코드들을 (저는 개인적으로 인프라 로직이라고 명명하여 부릅니다.) 모아 응집시켜 각각의 컴포넌트로 분리하는 것으로 이해하고 있으며, 개발자들은 이를 활용하여 애플리케이션 서비스에는 비즈니스 로직들만을 남겨 개발 유지보수 경험을 향상시킵니다. 인프라 로직? Application 전 영역에서 나타날 수 있는, 중복될 수 있으며 비즈니스가 아닌 로직을 의미합니다. 성능 검사, F..
제가 학습했던, 추천받거나 추천드리고 싶은 자료들을 정리한 Github Repo입니다. 링크 github.com/Lob-dev/Junior-Back-end-Developer-Concepts 개정 이력 - 2021.04.29 14:01 : 공통, 자바, 객체 지향, 스프링 추가 (서적, 인강, 참고로 구분) - 2021.04.29 14:47 : 내용 보강 (기타) - 2021.04.30 16:07 : 내용 보강 (자바 서적 추가, 스프링 질문 5개 추가) - 2021.05.03 01:58 : 개인적으로 추천하는 학습 흐름 추가 - 2021.05.03 11:30 : 서적 관련 설명 추가, 문서 포맷 변경, Java 면접 질문 강화. SQL, 설계 항목 템플릿 추가 - 2021.05.03 11:30 : 서적 ..
- Total
- Today
- Yesterday
- THP
- Distributed Cache
- 소비자 관점의 api 설계 패턴과 사례 훑어보기
- java
- HTTP
- spring
- URN
- Global Cache
- spring AOP
- Cache Design
- RESTful
- URI
- RPC
- configuration
- JVM
- Local Cache
- Switch
- cglib
- JDK Dynamic Proxy
- 근황
- 게으른개발자컨퍼런스
- JPA
- AMQP
- hypermedia
- lambda
- Data Locality
- rabbitmq
- Url
- mybatis
- 게으른 개발자 컨퍼런스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |