%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%84%A4%EA%B3%84

2019-07-11
[원본글] https://ericygkim.wordpress.com/2019/07/11/aws-ebselastic-block-storage-의-비용-최적화/ 애플리케이션 개발 후 AWS에 애플리케이션을 설치할 때 성능, 가용성, 확장성, 비용, 서비스 특성등 많은 요구사항들을 고려하여 복잡한 고민을 거쳐 EC2 인스턴스 사이즈등  AWS 자원들을 선택하게 됩니다. 그 중 중요한 요소 중 하나가 EC2인스턴스나 RDS에 연결되는 스토리지인 EBS(Elastic Block Storage)를 선택하는 일인데, 성능 및 비용까지 고려해서 선택하는 과정은 많은 고민을 할 수 밖에 없습니다.  EBS 볼륨의 크기를 정하는 것도 중요하지만 그것보다 더 중요한 것은 EBS 볼륨의 종류를 선택하고 성능과 비용 최적화 하는 것입니다. 얼마나 빠른 EBS 볼륨을 선택하는냐에 따라 애플리케이션, 데이터베이스의 성능에 큰 영향을 미치게 됩니다. 또한 EBS 볼륨의 유형에 따라 비용이 크게 달라집니다.  그러므로 요구되는 성능과 비용을 고려하여 적절한 스토리지 유형과 크기를 현명하게 선택하여야 합니다. 이와 관련된 기본 지식과 약간의 노하우를 공유할까 합니다....
2019-06-20
해당 코드는 Github 를 확인해주세요. JpaRepository의 쿼리 메서드를 통해서 간단한 쿼리들을 아래 예제 처럼 쉽게 만들수 있습니다. 유사한 쿼리가 필요해지면 쿼리 메서드를 지속적으로 추가해야 하는 단점이 있습니다. 이런 경우에 QuerydslPredicateExecutor 를 사용하면 매우 효과적입니다. QuerydslPredicateExecutor QuerydslPredicateExecutor 코드의 일부입니다. Predicate 를 매개변수로 받고 있기 때문에 Predicate를 통해서 새로운 쿼리를 만들수 있습니다. AccountRepository 적용하기...
2019-06-19
해당 코드는 Github 를 확인해주세요. Spring Guide Test 전략 가이드 Exception 전략 가이드 Domain 객체 가이드 외부 API 가이드 Service 적절한 크기 가이드 Directory 가이드 패키지 구성은 크게 레이어 계층형, 도메인형 이렇게 2 가지 유형이 있다고 생각합니다. 각 유형별로 간단하게 설명하고 제 개인적인 Best Practices를 설명하겠습니다. 계층형 계층형 구조는 각 계층을 대표하는 디렉터리를 기준으로 코드들이 구성됩니다. 계층형 구조의 장점은 해당 프로젝트에 이해가 상대적으로 낮아도 전체적인 구조를 빠르게 파악할 수 있는 장점이 있습니다. 단점으로는 디렉터리에 클래스들이 너무 많이 모이게 되는 점입니다....
2019-06-16
해당 코드는 Github 에 공개되어 있습니다. 실무에서 Lombok 사용법 에서 기본적인 Lombk 사용법과 Builder 사용법을 간단하게 정리 한 내용을 먼저 참고하면 좋습니다. JPA를 이용하면 엔티티 객체들을 Builder 기반으로 생성하는 것이 흔한 패턴입니다. 이러한 경우 Builder의 문제점들과 이것을 더욱 안전하게 사용하는 방법에 대해서 이야기해보겠습니다. Builder로 안전하게 생성하자 JPA 엔티티 객체들에 Builder 어노테이션을 이용해서 엔티티 객체를 Builder를 이용하는 것이 흔한 패턴입니다. 이 패턴의 장단점을 알아보고 더욱 안전하게 객체를 생성하는 방법을 소개하겠습니다. Builder 패턴을 사용하면 다음과 같은 장점이 있습니다....
2019-06-13
해당 코드는 Github 를 확인해주세요. Spring Guide Test 전략 가이드 Exception 전략 가이드 Domain 객체 가이드 외부 API 가이드 Service 적절한 크기 가이드 도메인 레이어는 모든 레이어에서 사용됩니다. 이 때문에 자기 자신의 책임을 충분히 다하지 않으면 많은 영역에서 그 책임을 넘겨받게 됩니다. 이번에는 이 내용을 중심으로 포스팅을 진행하겠습니다. 서비스 레이어란 ? 이미지 출저 애플리케이션 아키텍처와 객체지향...
2019-06-12
해당 코드는 Github 를 확인해주세요. Spring Guide Test 전략 가이드 Exception 전략 가이드 Domain 객체 가이드 외부 API 가이드 Service 적절한 크기 가이드 이번 주제는 외부 API 호출 가이드를 진행하겠습니다. 본 포스팅에서는 RestTemplate 기반으로 설명하고 있지만 RestTemplate에 대한 사용법이 초점은 아닙니다. Request, Response에 대한 로킹, Interceptors를 통한 추가 작업, errorHandler을 통한 각 Vendor마다 예외 처리 전략을 살펴보겠습니다. Vendor 마다 다르게 Bean 등록 우선 RestTemplate를 외부 API 특성에 맞는 Bean을 생성합니다. 여기서 중요한 점은 각 API Vendor사 별로 각각 Bean으로 관리하는 것입니다. Vendor사 별로 다르게 Bean을 적용하는 이유...
2019-03-18
이 글은 도메인 주도 설계 Domain-Driven Design (이하 DDD)에서 말하는 값 객체 Value Object 가 무엇인지 알아보고 마이크로서비스 환경에서 값 객체를 활용하는 법을 다룬다. 값 객체란 무엇인가? 전자 상거래 사이트에서 상품을 받을 주소(배송지)를 입력하고 주문한다고 생각해 보자. 시스템에서 배송지를 임의로 수정한다면 상품은 정상적으로 배송되지 못할 것이다. 따라서 시스템은 배송지를 바뀌지 않게 다뤄야 한다. 배송지를 바뀌지 않게 클래스로 표현하면 아래와 같다. 바뀌지 않는다는 것은 생성 이후에는 변경되지 않음을 의미한다. 이를 구현하기 위해 생성자로만 객체를 생성할 수 있으며 속성을 변경하는 Setter가 없다....
2019-02-26
Terraform 으로 AWS EMR 을 관리할 때 도움이 되는 몇 가지 팁들을 이야기 합니다....
2019-01-21
1편에 이어 2편을 올려봅니다. Latency에 대한 이해 1편에서 언급하였듯이 Latency가 높아지는 (길어지는) 이유는 전송단의 각 파이프 라인 단계별 변수들이 복합적으로 작용하기 때문에 실무에서는 정확한 원인과 해결책을 찾기는 매우 어렵다. 또한, 종단간 (End-to-End) latency를 기술적으로 측정하는 정량화된 방법도 아직은 없는 상태이다. 어떤 분들은 카메라 앞에서 손을 흔들고 시간을 측정하시는 분들도 있고, 어떤 분들은 "아" 소리를 내고 들릴때까지 측정하는 사람도 있다. 저도 매우 원시적인 방법을 사용하고 있다. Millisecond로 표시되는 디지털 시계를 카메라로 계속 생중계하면서 단말기에서 보이는 화면과 실제 시간을 비교하는 방법을 사용하고 있다. 즉, 정량화된 방법은 부재인 상태이지만 기본적으로 가장 이상적인 환경에서 구축한 서비스의 Latency를 측정할 필요는 있다. 이러한 정량적인 방법의 부재로 현실적인 다른 관점에서측정방법을 하나 소개하고자 한다. 지금까지의 경험으로 비추어 보아 Latency의 최종 결과물인 시청자들의 시청경험(QoE: Quality-Of-Experience)라는  관점에서 Latency에 대한 설명을...
2019-01-21
처음으로 공개 블로그인 Popit에 글을 올려봅니다. 단어나 표현이 조금 부족하더라도 너그러운 마음으로 읽어 주세요. 감사합니다. 초고속 인터넷망의 지속적인 확산과 모바일 환경이 빠른 속도로 진화를 거듭해왔지만 , 고 해상도 디지털 비디오를 인터넷으로 전송하는 작업은 항상 품질에 대한 확신을 할 수 없는 어려운 일이다 . 최근 VoD(Video-on-Demand) 사업의 경쟁이 치열해지다보니 라이브 비디오 스트리밍 서비스를 이용한 새로운 사업들이 디지털 비디오 시장의 새로운 성장 동력이 되어 많은 회사들이 시장에 진입하고 있는 상황이다....
더보기