본문 바로가기

전체 글314

[Java] ObjectMapping을 위한 MapStruct 알아보기 - 1 Intro Spring Framework에서 개발할 때, 비즈니스 로직, 객체와 객체 간의 Mapping 등을 할 때 get, set을 일일이 넣어주는 것은 굉장히 피곤한 일이다. 생산성을 떨어뜨리고, 실수하기 쉽다. 코드도 지저분하다. 이를 대신 해주는 것이 Object Mapping 라이브러리이다. Object Mapping에는 여러 종류가 있는데, mapstruct, modelMapper, jmapper, orika 등이 있다고 한다. 그 중 전 세계에서 가장 많이 사용하고 있는 MapStruct를 공부해보려 한다. MapStruct 란 MapStruct는 자바에서 객체 간 매핑에 대한 코드를 자동으로 생성해주는 매핑 라이브러리이다. Annotation을 사용하여 컴파일 시 매핑 코드를 생성한다. .. 2021. 8. 11.
[MyBatis] MyBatis의 Association과 Collection MyBatis에서 Domain 객체와 쿼리를 맵핑을 하다가 막혀서 이 부분을 공부하게 되었다. flat하게 데이터를 주는 쿼리와 다르게, 계층형태로 데이터를 전달해야하다 보면 편하게 맵핑할 방법을 찾게 된다. 이걸 Association과 Collection으로 해결할 수 있다. 세 개의 도메인으로 예를 들어보자. Artist - Album - Song Artist는 여러개의 앨범을 낼 수 있다. Album 안에는 여러 개의 Song이 있다. 즉, Artist와 Album은 1:N의 관계이다. Album과 Song 역시 1:N 관계이다. 만약 특정한 seq번호가 3인 앨범의 정보와 아티스트, 앨범 A에 수록된 곡을 알고 싶다면 어떻게 해야할까? 기존의 나 select로 seq번호가 3인 앨범 정보를 가져온.. 2021. 8. 10.
쿠버네티스(Kubernetes) 개념과 이해 - 2 Intro 쿠버네티스(Kubernetes) 개념과 이해 - 1에서는 오브젝트에 대해 이해했다. 이번 포스팅에서도 document를 이해할 수 있을 정도의 키워드 습득을 목표로 학습하고자 한다. 컨트롤러 1에서 설명했던 4개의 오브젝트로 애플리케이션을 설정, 배포할 수 있다. 이를 좀 더 편하게 관리하기 위해 컨트롤러 개념을 사용한다. 컨트롤러는 기본 오브젝트들을 생성하고, 관리하는 역할을 해준다. 종류는 Replication Controller(RC), Replication Set, DaemonSet, Job, StatefulSet, Deployment 들이 있다. Replication Controller Replication Controller는 Pod를 관리해주는 역할을 한다. 지정된 수로 Pod를 .. 2021. 8. 9.
쿠버네티스(Kubernetes) 개념과 이해 - 1 Intro 마이크로 서비스 아키텍처가 발전하고, 데브옵스에 대한 개념이 명확해지면서 컨테이너 기반의 환경이 주목받기 시작했다. Mesosphere, Swarm, Kubernetes등 다양한 환경이 있으나 현재는 쿠버네티스를 가장 많이 사용한다. 컨테이너 운영 환경 컨테이너를 하드웨어나 VM에 배포하여 사용하면 되는데, 왜 컨테이너 운영 환경이 필요할까? 작은 수의 컨테이너라면 수동으로 배포를 하면 되지만, 하드웨어와 VM의 수가 많아지고 컨테이너의 수가 많아지면 이 컨테이너를 어디에 배포해야 하는지도 결정해야 한다. 자원을 최대한 최적으로 사용하기 위해 적절한 위치에 배포해야한다. 특성에 따라 같은 물리서버에 배포하거나, 가용성을 위해 다른 서버에 배포하기도 한다. 이러한 역할을 스케쥴링이라고 한다. 스.. 2021. 8. 8.
[MySQL] InnoDB의 Lock 알아보기 transaction rollback 시 auto increment 이슈에 대해 포스팅을 쓰고 Transaction Isolation level 자체에 대한 지식이 부족하다고 생각되어 포스팅을 쓰게 되었다. *아주 정리가 잘 되어있는 글을 보고 공부를 하였다. Intro ACID 원칙을 철저히 지킬수록 동시성은 낮아진다. ACID 원칙을 희생하여 동시성을 얻을 수 있는데, DB엔진이 제공해주는 isolation level에 따라 다양한 locking 전략을 적용할 수 있다. 이를 적용하면, isolation 원칙에 어긋날수록 문제가 발생할 가능성은 커지지만 동시성을 높일 수 있다. Isolation level ANSI/ISO SQL standard에서 정의한 isolation level은 READ UNC.. 2021. 8. 7.
[Java] ExceptionHandler를 이용한 에러 처리 에러가 발생하면 클라이언트에 error message를 전달한다. 좀 더 상세하게 전달하고 싶어 반복적으로 예외를 처리를 했는데 코드가 너무 지저분해 보였다. 이럴 때, ExceptionHandler가 굉장히 유용하다. 예외처리를 좀 더 잘해볼 수 있는 방법을 공부해보자 ! Intro 예외 처리는 굉장히 중요하지만, 놓치는 부분이 많고 어렵다. 주로 사용하는 방식은 try-catch 방식인데 비즈니스 로직에 너무 많이 들어가게 되면 코드가 아주 지저분해지고 복잡해진다. 파라미터를 잘못 전달(400 Error)하거나 알 수 없는 에러(500 Error)가 발생하는 경우는 이걸 하나 하나 다 처리를 하려니 너무 번거로웠고 지저분했다. 이때, ExceptionHandler를 이용하면 비즈니스 로직에 집중할 수.. 2021. 8. 6.