모든 글 9

EC2를 이용한 AWS ECS 기반 Spring Boot 3 DataDog 적용

들어가기 전...인프라: AWS ECS, AWS EC2, AWS Linux 2023서버: Spring Boot 3(Java 17), Micrometer Tracing 결말 미리 보기DataDog에 서버의 정보를 보내려면 DataDog agent를 이용해야 하고 EC2 내 서비스들은 APM을 이용해 Agent에게 정보를 보내도록 설정한다. EC2 인스턴스 타입을 c5.large 기준 ENI 제한이 3이다. 이로 인해 ECS 서비스 2개를 실행하고 DataDog agent는 각 ec2에서 2개의 서버 정보를 수집한다. 인스턴스 타입을 변경해서 단일 EC2에 더 많은 서비스를 기동 하면, DataDog host 비용을 절약할 수 있다. DataDog은 agent의 수로 host 수를 측정한다. infrastr..

인프라 2024.10.03

기본적인 AWS VPC 구성기

2024년 7월 기준 AWS Console ui를 스크린샷으로 캡처했습니다. 추후 ui는 변경될 수 있습니다.1. VPC 생성1. VPC 서비스에서 Virtual Private Cloud > VPC > VPC 생성 클릭  2. VPC 생성 정보 입력 후 "생성" 버튼 클릭- 생성할 리소스: VPC만- 이름 태그: 원하는 VPC이름 입력- IPv4 CIDR: 원하는 IP를 입력(x.x.0.0에 /16 선택 시 x.x.0.0 ~ x.x.255.255) 3. 생성한 VPC 확인    2. VPC 서브넷 생성1. VPC 서비스에서 Virtual Private Cloud > 서브넷 > 서브넷 생성 클릭  2. VPC ID에 앞서 만든 VPC 선택 3. 퍼블릭 서브넷으로 만들 정보입력 이후 서브넷 생성 클릭- 서브..

인프라 2024.07.27

AWS SQS 256KB 이상 대용량 메시지 처리와 Spring Boot

들어가기 전..Spring Boot 3.3.1(Java 17)을 기준으로 구현했습니다.2024년 7월 기준 AWS SQS 대용량 전송 라이브러리는 Java, Python만 있습니다. 소스는 GitHub에서 확인 가능합니다.https://github.com/Dove-kim/spring-boot-3-aws-sqs-bigmessage  GitHub - Dove-kim/spring-boot-3-aws-sqs-bigmessage: AWS SQS에서 256KB 이상의 메시지 전송 기능 구현AWS SQS에서 256KB 이상의 메시지 전송 기능 구현. Contribute to Dove-kim/spring-boot-3-aws-sqs-bigmessage development by creating an account on ..

인프라 2024.07.06

AWS Bedrock + Spring Boot + Amazon Bedrock Guardrails를 이용해 간단한 AI 사용해보기

들어가기전..본게시물은 2024년 6월에 작성했습니다. Java 11, Spring Boot3를 사용했으며, 자세한 소스는 GitHub에 올렸습니다. spring-boot-3-aws-bedrock/src/main/java/com/dpot/bedrock/domain/aichat/service at main · Dove-kim/spring-boot-3-aws-bedrockAWS Bedrock + Spring Boot 3. Contribute to Dove-kim/spring-boot-3-aws-bedrock development by creating an account on GitHub.github.com AWS Bedrock FM 사용 신청한국어를 사용할 수 있으며 토큰제한이 가장 큰(2024년 6월 기준..

인프라 2024.06.16

AWS SNS과 FCM 그리고 Spring Boot를 곁들인..

시작하기 앞서본 글은 2024년 4월 말~ 5월 1주 차에 작성했습니다.Spring boot 2, Java 17과 AWS SDK v2를 사용했습니다.언제 이런 기능이 생긴거지..? 회사에서 AWS SNS를 이용해 Slack메시지 전송을 구현하려다 우연히 모바일 푸시를 발견했다.새 기능 알럿을 보니, FCM 사용이 가능하다는데, 기존 FCM만 사용하는 것과 차이가 궁금하다.퇴근하고 조금씩 조사한 내용을 정리해 보자 AWS SNS 모바일 푸시 모바일 푸시 알림 - Amazon Simple Notification Service이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.docs.aws.amazo..

인프라 2024.05.08

JPA IdentifierGenerator의 connection에 대해..

본 글은 Spring Boot 2.7.13(Java 17), Hibernate 5.6.15 기준으로 작성됨 JPA에서 ID를 커스텀하게 만들 때 IdentifierGenerator, Configurable를 implements 받아서 ID생성기를 구현한다. 구글링을 하다보면, session.connection();이나 session.getJdbcConnectionAccess().obtainConnection();를 사용해서 DB connection을 가져온다. session.connection()과 session.getJdbcConnectionAccess().obtainConnection()는 뭔 차이일까? 1단계 일단, 둘 다 디버깅 걸어보자 session.connection() session.getJ..

개발 고민 2023.09.04

단일 책임 원칙과 클린코드 V2

해당 게시글은 과거 개인 블로그에 작성한 내용을 옮긴 내용입니다. https://tech.dpot.xyz/post/52 개발하며 다른 개발자와 협업하는 상황이 많이 온다. 서비스의 기획, 설계를 함께하면 상관없어도, 프로젝트 중간에 개발자가 참여하면 서비스의 전반적 이해를 위해 적지 않은 시간이 필요하다. 이러한 상황에서 SOLID의 S인 단일 책임 원칙에 준수하여 작성한 소스는 빛난다. 실무에서 개발하며, 느낀 단일책임원칙을 준수하기 위한 간단한 규칙을 정리해 보려 한다. 1. Setter 금지 생각해 보면 Lombok 찬양론을 말하던 개발자였다. @Data하나면 모든 것을 만들어주던 라이브러리의 문제는 생각하지도 않고 사용했던 것부터 클린코드와 이별한 듯하다. JPA와 lombok을 같이 사용할 경우..

개발 고민 2023.08.09

Linode Objects Storage 구성 및 Spring Cloud aws와 연동

Akamai사에서 Linode를 인수하며, Akamai에서 AWS S3와 같은 Object Storage를 서비스하고 있다. Naver Cloud도 S3와 호환되는 저장소를 제공하고 Linode도 S3와 호환되는 Object Storage서비스를 제공한다. S3와 호환되는 저장소라면, AWS SDK로 연결이 가능할 터, 연결해 보자.. 1. Linode Object 만들어보자 1. AWS, GCP, NCP 모두 비슷한 구조를 가진 듯하다. Linode도 버킷이라는 명칭을 사용하며 생성할 수 있는 버튼이 존재하니 누르자. 2. 버킷의 명칭을 label에 적고, 리전을 골라주면 된다. 2023년 7월 기준 4개 중에서 선택가능하다. 3. 버킷을 만드려 하니, 안내문구가 나온다. 요금에 대한 설명이다. aws..

인프라 2023.07.12

MultipartFile 업로드에 관하여

어디에서든지 파일을 다루는 시스템을 설계하고 구현할 일이 생긴다. 도메인은 다르고 파일의 형태는 다르지만, 뭔가 항상 다루는 MultipartFile. 한번 구현해 보자. 설계 필요한 기능은 다음과 같다. 단일 파일 업로드 업로드한 전체 파일 조회 업로드한 파일 제거 이번 구현에서 고려하지 않을 기능은 다음과 같다. DB 다중 파일 업로드 API controller 예제 소스에서는 서버가 실행되는 위치에 업로드한 파일을 저장할 예정이다. 단순 업로드 구현 @Slf4j @Service public class FileService { @Value("${file.upload-path}") private String uploadDirectory; public boolean saveFile(MultipartFil..

개발 고민 2023.05.30