2020/02 3

[DynamoDB] Secondary Index 설계원칙 및 고려사항

1. Secondary Index를 사용하는 이유 다음과 같은 은행 계좌를 관리하는 테이블을 생각해보자. OriginCountry가 Germany인 모든 데이터를 불러온다고 가정하자. Query를 통해서 불러오기 위해선 AccountID와 CreationDate을 알고 있는 상황이어야 하지만 실제 Query상황에서는 이를 알 수 있는 방법이 없기 때문에 scan을 사용해야한다. scan을 사용하면 모든 데이터에 대해 검색을 실행하기 때문에 그만큼 실행속도가 느리다. 그러나 GSI를 사용하게 되면 다음과 같이 Primary Key를 원하는대로 바꿔서 테이블을 새로 생성 할 수 있다. GSI Table(우측 테이블)을 생성하면서 기존 OriginCountry 속성을 Partition Key로 설정하였다. 기..

IT/NOSQL 2020.02.18

[Spring] @RestController vs @Controller

1. @Controller 전통적인 Spring MVC Controller는 View 기술을 이용하여 화면을 리턴하는 방식이다. json, xml형태의 객체를 반환하기 위해서는 @ResponseBody를 사용하여 json, xml형태의 객체를 리턴 할 수 있다. @Controller의 workflow는 다음과 같다. 위 workflow의 순서를 간략히 설명하면 다음과 같다. Client는 URL로 서비스에 Request를 보낸다. 해당 요청을 처리할 수 있는 Handler를 찾아 Mapping 하기 위해 Dispatcher Servlet가 인터셉트 한다. Mapping 된 Handler가 존재하는 Controller에서 해당 요청을 처리하고, Model and View 객체를 반환한다. Dispatche..

IT/Java Spring 2020.02.07

2019 회고

1. 올해 첫 직장에 입사하며 다룰 수 있었던 기술 1-1. AWS 기존의 알던 온프레미스 환경에서 벗어나 클라우드를 접하였다. 쓴만큼 지불한다는 개념이 존재하였기 때문에 각 클라우드 제품을 사용하는 것에 대한 최적화, 기반 기술, 한계점, 단위 비용에 대해 명확히 알고 있어야만 설계가 가능했다. 그러므로, 일반 개발자보다 훨씬 더 많은 학습을 통해 deep하게 공부를 할 필요성을 인지하였다. 중점적으로 사용한 서비스로는 Lambda, EC2, S3, API Gateway, EKS이다. 2020에는 EKS, MSK, Elastic Search 등 더욱 많은 서비스를 경험하여 내 것으로 만들 것이며 기반 기술에 대해 심도 있는 공부를 할 예정이다. 1-2. Kubernetes & Docker 입사 후 AW..

회고 2020.02.01