분류 전체보기
-
[MyBatis] MyBatis foreach INSERT 성능 테스트 해보기Server/MyBatis 2021. 5. 27. 15:26
MyBatis INSERT 쿼리 성능 테스트 MyBatis에는 foreach 라는 것을 이용해서 Batch Insert를 할 수 있는 기능을 제공해줍니다. 그런데 문득 foreach를 통해서 데이터를 INSERT 하는 것과 한 건씩 여러번 INSERT 하는 성능 차이가 얼마나 날까? 하는 의문점이 생겨 한번 글을 정리해보려 합니다. 당연히 성능은 foreach를 쓰는 것이 빠를 것인데요. 그럼에도 대략이라도 얼마나 차이나는지 한번 알아보겠습니다. 일반 INSERT 쿼리 먼저 위와 같이 for 문을 10000번 반복해서 데이터를 INSERT 해보겠습니다. 누가봐도 비효율적.. 말이 안되는 코드지만 그럼에도 몇초나 걸리는지 한번 실행해보았습니다. 실행해보니 예상했던대로 꽤나 시간이 걸렸는데요. 결과는 아래와..
-
[Java] 자바에서 Generic 이란 무엇일까?Language/Java 2021. 5. 25. 11:16
제네릭(Generic)이란? 자바의 제네릭(Generic)은 형 변환시에 발생할 수 있는 문제들을 사전에 없애기 위해서 만든 것입니다. 아직은 어떤 말인지 와닿지 않을 수 있습니다. 바로 예제 코드를 보면서 제네릭에 대해서 알아보겠습니다. public class CastingDTO { private Object object; public void setObject(Object object) { this.object = object; } public Object getObject() { return object; } } public class GenericSample { public static void main(String[] args) { GenericSample sample = new GenericS..
-
[MySQL] 트랜잭션 고립 레벨이란 무엇일까?Book/Real MySQL 2021. 5. 25. 10:44
MySQL에서의 트랜잭션 MySQL의 동시성에 영향을 미치는 잠금(Lock), 트랜잭션, 그리고 트랜잭션의 격리 수준을 살펴보겠습니다. 트랜잭션은 작업의 완전성을 보장해 주는 것입니다. 잠금: 트랜잭션은 서로 비슷한 개념 같지만 사실 잠금은 동시성을 제어하기 위한 기능입니다. 트랜잭션: 데이터의 정합성을 보장하기 위한 기능입니다. 잠금은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있게 해주는 역할 격리 수준이라는 것은 하나의 트랜잭션 내에서 또는 여러 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지를 결정하는 레벨 MySQL의 격리 수준 트랜잭션의 격리 수준(isolation level)이란 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션..
-
[Spring] Spring Boot로 MongoDB Atlas 사용하는 법Server/Spring Boot 2021. 5. 23. 03:07
Spring Boot에서 MongoDB Atlas 사용하는 법 이번 글에서는 Spring Boot로 MongoDB Atlas를 사용하는 법에 대해서 정리해보려 합니다. 먼저 https://www.mongodb.com/cloud/atlas1 MongoDB Atlas 사이트에 먼저 접속하겠습니다. MongoDB Atlas를 사용하기 위해서는 회원가입을 먼저 해야 합니다. 위에 자기의 정보에 맞게 입력 후에 회원가입을 하겠습니다. 저는 자바를 사용할 것이기 때문에 Java를 선택하고 다음을 누르겠습니다. 무료 버전을 사용할 것이기 때문에 FREE를 선택하고 나머지는 기본 설정대로 두고 만들겠습니다. 그리고 1~3분 정도 기다리면 클러스터가 하나 생성이 됩니다. 생성이 되었다면 Connect를 눌러서 DB Us..
-
[AWS] API Gateway, Lambda로 S3 파일 업로드 API 만들기Cloud/AWS 2021. 5. 14. 13:54
API Gateway, Lambda로 S3 파일 업로드 하기 저번 글 에서 API gateway를 만들고 해당 API가 호출되었을 때 람다 함수가 호출되는 간단한 예제를 진행해보았습니다. 이번 글에서는 조금 더 응용해서 API gateway가 호출되었을 때 람다 함수로 S3에 파일 업로드 했을 때 이미지 사이즈를 줄이는 작업도 일어나는 것을 해보겠습니다.(NodeJS Lambda로 이미지 사이즈 줄이기) 저번 글 도 같이 참고해서 보시는 것을 추천합니다. 바로 IAM 설정부터 진행해보겠습니다. IAM 역할 설정 위의 두 권한을 가진 역할 하나를 만들겠습니다. Lambda 함수 생성하기 위에서 만들었던 IAM 역할을 선택하고 NodeJS 기반의 Lambda 함수를 생성하겠습니다. 그리고 이미지 업로드를 할..
-
[AWS] NodeJS로 만든 Lambda 함수로 이미지 사이즈 줄이는 법Cloud/AWS 2021. 5. 13. 17:00
NodeJS, Lambda로 Image Resize 하는 법 저번 글 에서 Lambda로 Thumbnail Image를 생성하는 법에 대해서 정리를 해보았는데요. 저번 글에서는 Lambda 함수를 Python을 사용했습니다. 이번 글에서는 NodeJS를 사용하여 Lambda 함수를 만들고 Image Resize를 하는 것에 대해서 정리해보겠습니다. 이번 글에서 해보고자 하는 아키텍쳐는 위와 같습니다. 즉 사용될 도구는 아래와 같은데요. NodeJS AWS S3, Lambda 하나씩 어떻게 설정해서 어떻게 진행하는지에 대해서 정리해보겠습니다. AWS Cli 설치하기 brew install awscli 그리고 IAM 사용자의 엑세스 키, 비밀 엑세스 키를 등록을 해야 하는데요. IAM 사용자를 만들고 엑세스..
-
[AWS] Spring Logback으로 CloudWatch에 로그 보내는 법Cloud/AWS 2021. 5. 13. 11:40
Spring Error log CloudWatch로 전송하는 법 서버를 관리하게 되면 가장 많이 하는 일 중 하나가 로그를 읽는 작업이라고도 할 수 있습니다. 로그는 그 당시 어떤 일이 일어났는지 확인할 수 있게 해주는 중요한 단서이기 때문에 문제가 생겼을 때 해결하는데 많은 도움이 됩니다. 그렇기 때문에 이런 로그들은 반드시 기록하고 있어야 하며 일정 기간 동안 유실되지 않도록 잘 관리해야 합니다. 또한 모든 로그를 다 기록할 순 없기 때문에 필요한 로그들만 잘 기록해야 하고, 많은 로그들 중에서 손쉽게 필요한 로그들만 찾을 수 있도록 관리할 방법들도 필요한데요. AWS에서는 이러한 기능들을 편리하게 사용할 수 있도록 CloudWatch라는 서비스를 제공해주고 있습니다. CloudWatch Agent가..
-
[AWS] API Gateway로 Lambda 함수 호출하는 간단한 실습해보기Cloud/AWS 2021. 5. 13. 10:06
API Gateway으로 Lambda 함수 실행하는 법 이번 글에서는 API Gateway를 사용해서 Lambda 함수를 실행하는 아주 간단한 실습에 대해서 정리해보겠습니다. (다음 글에서는 좀 더 복잡한 API 역할을 하는 Lambda 함수를 만들어서 진행해보겠습니다.) IAM 역할 만들기 Lambda에 접근할 수 있도록 AWS Lambda_FullAccess 권한을 추가하겠합니다. Lambda 함수 만들기 Lambda 함수에서 런타임에는 원하는 거 아무거나 선택한 후에 위에서 만든 역할을 넣어주고 만들겠습니다. API Gateway 만들기 API Gateway를 통해서 서버 API 만들듯이 만들 것입니다. 여기서 만든 API가 호출되면 위에서 만든 람다 함수의 결과가 반환이 될 것입니다. 메소드 생성..