본문 바로가기
728x90
반응형

전체 글396

[SpringBoot] @Transactional 사용 방식 정리 안녕하세요. J4J입니다. 이번 포스팅은 @Transactional 사용 방식에 대해 적어보는 시간을 가져보려고 합니다. @Transactional이란? @Transactional은 Spring에서 사용 가능한 어노테이션 중 하나로 트랜잭션의 원칙이 지켜질 수 있도록 도와줍니다. 조금 더 단순한 기능에 대해서 말해보면, 비즈니스 로직이 동작되는 과정에서 에러가 발생되면 DB 작업을 모두 롤백을 시켜주고 에러가 발생되지 않으면 DB 작업을 모두 커밋하도록 도와줍니다. 비즈니스 로직에서 트랜잭션 처리가 이루어지는 계층은 Service Layer로 정의되고 있습니다. 즉, Spring 개발을 하다 보면 Controller - Service - Repository의 형태가 구성되기 마련인데 이중 Service .. 2023. 9. 25.
[SpringBoot] LocalDateTime 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 LocalDateTime 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. LocalDateTime이란? LocalDateTime은 Java8에서 등장한 클래스 중 하나로 날짜와 관련된 다양한 기능들을 수행할 때 활용할 수 있습니다. Spring을 이용하여 개발 할 때 날짜 타입을 생성하면 보통 Date를 사용해 볼 수 있습니다. 하지만 LocalDateTime이 등장하면서 부터 Date 대신 LocalDateTime의 사용을 권장하고 있습니다. 왜냐하면 Date는 mutable(가변성)하기 때문에 Date 값을 새로운 변수에 담아 값을 수정하게 되면 원본도 함께 변경이 이루어지지만 LocalDateTime은 immutable(불변성)이기 때문에 원본은 변.. 2023. 9. 24.
[SpringBoot] i18n을 활용하여 다국어 처리하기 안녕하세요. J4J입니다. 이번 포스팅은 i18n을 활용하여 다국어 처리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. i18n이란? i18n은 국제화하는 기능을 의미합니다. 다른 말로는 세계에 존재하는 다양한 언어들을 서비스 사용자에게 보여줄 때 사용될 수 있는 것을 뜻합니다. 다른 여러 지역의 사용자들이 하나의 서비스를 사용하는 경우는 잦은 일은 아니지만, 만약 이런 유형의 서비스를 제공하기 위해 개발해야 한다면 i18n을 활용하여 다양한 지역의 언어들을 보여주는 기능을 활용해 볼 수 있습니다. 기본 설정 [ 1. properties 파일 인코딩 설정 ] 일반적인 상황에서는 properties 파일 인코딩을 설정하지 않아도 되지만 한글을 적용하기 위해서는 properties 파일 인코딩 설정이 .. 2023. 9. 18.
[Springboot] Jacoco를 이용하여 테스트 커버리지 확인하기 안녕하세요. J4J입니다. 이번 포스팅은 Jacoco를 이용하여 테스트 커버리지 확인하는 방법에 대해 적어보는 시간을 가져보려고 합니다. Jacoco란? Jacoco는 제목에서도 알 수 있는 것처럼 Spring에서 개발된 자바 소스의 테스트 커버리지를 확인하기 위해 사용되는 오픈소스 라이브러리입니다. 여기서 커버리지(Coverage) 라고 하는 것은 단어를 해석해 보면 "적용 범위"를 뜻하는 것을 알 수 있으며, 결국 테스트 커버리지라고 하는 것은 테스트 케이스가 작성된 소스 코드 범위를 뜻하는 것을 알 수 있습니다. 즉, Jacoco를 활용한다면 프로젝트에서 작성된 테스트 코드들이 전체 소스 코드 중 어느 수준까지 적용되고 있는 것을 확인할 수 있게 되고 커버리지 비율이 높을수록 전체 소스에 대한 테스.. 2023. 9. 16.
[SpringBoot] SpringBatch 사용하기 (4) - Quartz로 클러스터링 처리하기 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 마지막인 Quartz로 클러스터링 처리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 [SpringBoot] SpringBatch 사용하기 (2) - Job Parameter 활용 및 동일 Job 반복 실행 [SpringBoot] SpringBatch 사용하기 (3) - Quartz로 배치 만들기 클러스터링 적용 방법 이전 글을 통해서도 Quartz를 사용해 볼 수 있었지만 Quartz를 적용했다고 해서 모두 클러스터링이 적용된 것은 아닙니다. 클러스터링을 적용하기 위해서는 SpringBa.. 2023. 9. 10.
[SpringBoot] SpringBatch 사용하기 (3) - Quartz로 배치 만들기 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 세 번째인 Quartz로 배치 만드는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 [SpringBoot] SpringBatch 사용하기 (2) - Job Parameter 활용 및 동일 Job 반복 실행 Quartz란? Quartz는 Spring에서 배치 프로세스를 만들 수 있는 오픈소스 라이브러리 중 하나로 작은 단위의 서비스부터 시작하여 큰 규모의 서비스들까지 모두 활용해 볼 수 있습니다. 이전 글들을 확인해보면 Spring Batch를 이용하여 배치를 만들어내는 것들을 볼 수 있었는데,.. 2023. 9. 3.
[SpringBoot] SpringBatch 사용하기 (2) - Job Parameter 활용 및 동일 Job 반복 실행 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 두 번째인 Job Parameter 활용 및 동일 Job 반복 실행하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 Parameter 사용 (1) - Tasklet 이전 글에서 Tasklet을 통해 로그 데이터 적재하는 코드를 작성해 봤습니다. 해당 코드를 Parameter 사용하는 소스로 변경해 보겠습니다. 먼저 Job이 수행될 때 활용할 Parameter를 등록하는 곳은 JobLanucher를 이용하여 Job을 등록할 때입니다. 예를 들어, Scheduler가 동작될 때 입력해 둔 Par.. 2023. 8. 26.
[SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 첫 번째인 Scheduler를 이용하여 Tasklet, Chunk 배치 만드는 방법에 대해 적어보는 시간을 가져보려고 합니다. SpringBatch란? SpringBatch는 Spring에서 작업해야 되는 대용량 처리들을 반복적으로 수행할 수 있도록 도와주는 배치 프레임워크입니다. 서비스 운영을 하다 보면 사용자의 요청과 관련 없이 일정 시간마다 작업이 이루어져야 하는 것들이 발생하기 마련입니다. 예를 들면, 일정 기간이 지난 사용자들의 계정을 잠김 처리를 수행하던가 또는 매일 발생된 로그들을 이용하여 분석된 결괏값을 새롭게 적재하는 것들이 있습니다. 이런 기능들을 구현할 때 일정 시간마다 개발자가 로직이 동작되도록 작업을 항상 할 .. 2023. 8. 22.
[AWS] Organizations로 계정 관리하기 안녕하세요. J4J입니다. 이번 포스팅은 Organizations로 계정 관리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [AWS] IAM으로 사용자 관리하기 [AWS] IAM으로 사용자 그룹 관리하기 [AWS] IAM 역할을 이용하여 임시 권한 부여하기 Organizations란? AWS Organizations는 여러 AWS 계정들을 조직 단위로 통합하여 중앙 관리할 수 있도록 도와주는 AWS 서비스입니다. 개인적으로 Organizations를 처음 접하게 되면서 가장 궁금했던 부분은 "IAM과 어떤 차이가 있을까?" 였습니다. IAM과의 차이점은 다음과 같이 간단히 정리해 볼 수 있습니다. 첫 번째는 관리되는 계정입니다. IAM은 AWS 계정을 통해 생성할 수 있는 IAM 사용자들.. 2023. 8. 13.
[AWS] IAM 역할을 이용하여 임시 권한 부여하기 안녕하세요. J4J입니다. 이번 포스팅은 IAM 역할을 이용하여 임시 권한 부여하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [AWS] IAM으로 사용자 관리하기 [AWS] IAM으로 사용자 그룹 관리하기 역할이란? IAM에서 사용해 볼 수 있는 역할은 특정 IAM 사용자에게 사용자가 가지고 있지 않은 권한을 임시로 부여할 때 활용될 수 있습니다. 또한 이번 글에서 다루진 않겠지만 역할은 임시 권한 부여뿐만 아니라 EC2, Lambda와 같은 AWS 서비스에서 다른 AWS 서비스 자원에 접근하려고 할 때 사용될 수도 있습니다. 사용자에게 역할을 부여할 때 주의할 점이 있습니다. 특정 IAM 사용자에게 부여된 권한을 이용하여 AWS 서비스를 사용하고 있을 때 해당 사용자에게 역할을 부여해 .. 2023. 8. 10.
[AWS] IAM으로 사용자 그룹 관리하기 안녕하세요. J4J입니다. 이번 포스팅은 IAM으로 사용자 그룹 관리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [AWS] IAM으로 사용자 관리하기 사용자 그룹이란? IAM에서 사용해 볼 수 있는 사용자 그룹은 동일한 권한을 부여해야 하는 다수의 사용자들을 보다 관리하기 쉽게 만들어줍니다. 예를 들면, 클라우드 관리하는 담당자가 필요하여 직원을 채용하고 해당 직원에게 클라우드 관리할 수 있는 권한을 부여한 AWS 사용자를 생성하여 제공해 줄 수 있습니다. 만약 해당 상황에서 동일한 역할을 하는 담당자가 더 많이 채용된다고 가정해보겠습니다. 그러면 이전 직원처럼 해당 직원들에게도 동일한 권한을 부여한 AWS 사용자를 생성해줘야 합니다. 하나씩 AWS 사용자를 생성하며 동일한 권한을 적용.. 2023. 8. 6.
[AWS] IAM으로 사용자 관리하기 안녕하세요. J4J입니다. 이번 포스팅은 IAM으로 사용자 관리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. IAM이란? IAM은 Identity and Access Management의 약자로 AWS에서 제공해 주는 여러 리소스들에 안전하게 액세스 할 수 있는 기능을 제공해 줍니다. IAM에서 액세스 관리를 하기 위해 사용되는 것들은 다음과 같이 있습니다. 사용자 (USER) 사용자 그룹 (GROUP) 정책 (POLICY) 역할 (ROLE) 먼저 사용자는 AWS 내부에서 특정 리소스에 접근하여 기능 처리를 할 수 있는 사용자를 의미합니다. 상황에 따라 AWS 콘솔에 직접 로그인하여 AWS에서 제공해 주는 리소스 설정들을 해볼 수 있고, Git과 같은 곳에서 AWS에 액세스 하기 위해 사용될 수도.. 2023. 8. 3.
[AWS] Transit Gateway 피어링 연결하기 안녕하세요. J4J입니다. 이번 포스팅은 Transit Gateway 피어링 연결하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [AWS] VPC 피어링 연결하기 [AWS] Transit Gateway 사용하기 [AWS] Transit Gateway Blackhole 사용하기 Transit Gateway 피어링이란? Transit Gateway 피어링은 VPC 피어링과 유사하게 서로 다른 두 개의 Transit Gateway들 간에 라우팅을 할 수 있도록 연결해 주는 것을 의미합니다. Transit Gateway 피어링도 VPC 피어링처럼 다음과 같은 특징들을 가지고 있습니다. 서로 다른 지역에 있는 Transit Gateway 연결 가능 서로 다른 계정에 있는 Transit Gateway.. 2023. 7. 31.
[AWS] Transit Gateway Blackhole 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 Transit Gateway Blackhole 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [AWS] VPC 피어링 연결하기 [AWS] Transit Gateway 사용하기 Blackhole이란? Transit Gateway에서 Blackhole은 특정 대역을 통신할 수 없게 만들려고 사용됩니다. 예를 들면 Routes 설정에 10.0.1.0/24 대역이 연결 및 전파되도록 설정했는데 10.0.1.184/32 대역에 대해서만 통신을 불가하게 만들고 싶다면 Blackhole을 활용해 볼 수 있습니다. 이처럼 Blackhole을 활용한다면 통신이 가능한 대역들을 하나씩 등록해주지 않고 더 큰 범위의 대역을 등록해줬다가 통신이 불가능해야 하는 대역.. 2023. 7. 25.
[AWS] Transit Gateway 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 Transit Gateway 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [AWS] VPC 피어링 연결하기 Transit Gateway란? Transit Gateway는 네트워크 중앙 Hub 관리형 서비스로 VPC와 온프레스미 네트워크를 서로 연결하는데 도움을 줍니다. VPC 피어링에 대해 알고 계신 분들은 Transit Gateway의 역할이 유사하다는 것을 느끼실 겁니다. 결론부터 말하면 Transit Gateway는 VPC 피어링의 단점을 보완하는데 도움을 줍니다. VPC 피어링의 단점은 1:1 연결만 가능하기 때문에 n개의 VPC들의 피어링이 서로 필요한 경우 n(n-1)/2개 만큼의 피어링 연결을 해줘야 합니다. Transit Gat.. 2023. 7. 22.
[AWS] VPC 피어링 연결하기 안녕하세요. J4J입니다. 이번 포스팅은 VPC 피어링 연결하는 방법에 대해 적어보는 시간을 가져보려고 합니다. VPC 피어링이란? VPC 피어링은 서로 다른 두 개의 VPC들 간에 라우팅을 할 수 있도록 연결해 주는 것을 의미합니다. 일반적으로 VPC 피어링은 Private Subnet 내부에 있는 AWS 자원들을 서로 연결할 때 활용됩니다. 하지만 그렇다고 해서 Public Subnet 내부에 있는 AWS 자원들을 서로 연결할 때 활용할 수 없다고 말할 수는 없습니다. 왜냐하면 VPC 피어링은 외부 인터넷 망을 거치지 않고 다른 VPC 내부에 있는 AWS 자원에 접근하기 때문에 외부 인터넷 망을 사용하는 것보다 더 빠르게 접근할 수 있게 도와주기 때문입니다. VPC 피어링의 특징들은 다음과 같이 있습.. 2023. 7. 20.
[AWS] Session Manager를 이용하여 EC2 인스턴스에 접근하기 안녕하세요. J4J입니다. 이번 포스팅은 Session Manager를 이용하여 EC2 인스턴스에 접근하는 방법에 대해 적어보는 시간을 가져보려고 합니다. Session Manager란 ? Session Manager는 종합 관리형 AWS System Manager 기능으로 SSH를 사용하는 것 없어 EC2 인스턴스에 접근할 수 있도록 도와줍니다. AWS에서 Session Manager의 장점들로 얘기하는 것들은 다음의 것들이 있습니다. 인스턴스에 접속하기 위한 인바운드 설정이 필요 없음 Bastion 호스트를 유지할 필요 없음 SSH 키 관리를 할 필요 없음 Session 활동에 대한 로깅 처리 즉, 그동안 인스턴스에 접근할 때 해왔던 불필요한 작업들을 단순하게 AWS에 접속하여 AWS CLI 클릭 한.. 2023. 7. 17.
[React] Vite 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 vite 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. Vite란? vite는 webpack, rollup 등과 같이 모듈 번들링을 수행할 때 사용되는 번들러 중 하나입니다. vite가 처음 등장하면서 개발자들에게 알려지기 시작할 때 봤었던 "리액트가 10배가 빨라집니다" 라는 글이 아직도 생각이 납니다. 이런 글의 내용처럼 vite의 가장 큰 특징 중 하나는 속도가 빠르다는 겁니다. ESM, HMR, ESBuild 등을 활용하여 서버 구동되는 시간, 번들링 속도, 코드 갱신 속도 등 다양한 방면에서 빠른 속도를 자랑하기 때문에 프로젝트의 규모가 커질수록 느낄 수 있었던 답답했던 번들링 속도 문제들을 개선하는데 도움을 줍니다. 번들링 속도 문제들을 개선.. 2023. 7. 11.
728x90
반응형