전체 글 87

AWS Marketplace API Region 확인하는 방법

AWS API를 사용할 때는 연동할 서비스가 있는 Region의 값을 지정해야합니다. 글로벌 리전을 사용하고 있는 경우, region 별로 aws.region 값을 다르게 지정해주어야 합니다. 이렇게 찾은 Region 정보는 AWS Marketplace Client를 생성할 때 사용됩니다. private void setAwsRegionProps() { System.setProperty("aws.region", conf.aws_marketplace_region); } private void setAwsMarketplaceClientProps() { // @See com.amazonaws.services.marketplacemetering.AWSMarketplaceMeteringClientBuilder#de..

AWS/AWS Marketplace 2024.01.16

AWS Marketplace SaaS 제품의 Lifecycle

AWS MP 제품을 등록하면 LIMITED 상태가 됩니다. 개발자가 진행하는 연동 과정은 LIMITED 단계에서 진행할 수 있습니다. LIMITED 상태에서는 Allowlisted AWS accounts로 지정된 계정에서만 상품 조회가 가능합니다. 허용되지 않은 계정에서 조회하면 권한이 없다고 나옵니다. Public으로 변경하면 일반 사용자에게 공개됩니다. 기본적으로 제품을 처음 등록한 이후에는 대부분의 중요한 정보는 수정하기 어렵습니다. LIMITED 상태에서는 일부 정보를 수정할 수 있지만 역시나 제한적입니다. 예를 들어 각 dimension 별 가격 등 중요한 정보는 public 단계 이후에서는 수정이 어렵습니다. 이미 사용자가 쓰고 있는 상품의 가격을 변경하거나 환불 조항을 변경할 수 없기 때문인..

AWS/AWS Marketplace 2024.01.16

AWS Marketplace SaaS Subscription 과금 모델이 적합한지 미리 검토하는 방법

AWS Marketplace SaaS Subscription 이해하기 사용자의 사용량에 따라서 과금하는 모델에 대해서 잠시 알아보겠습니다. 사용자의 수, 호스트 수 등을 기준으로 과금을 설정할 수 있습니다. 각 제품에 맞는 커스텀 단위가 필요한 경우 Unit을 사용하면 됩니다. 예를 들어, ‘수집되는 로그 수’ 또는 ‘서비스에 연결되는 세션의 수’ 등의 과금 단위가 필요할 때에 Unit을 사용할 수 있습니다. 하나의 서비스 안에서 구독 및 과금의 기준이 되는 세부 상품들이 나뉘어져있을 수 있습니다. 이러한 과금의 단위를 dimension이라고 부릅니다. 예를 들어 Whatap 이라는 하나의 AWS MP 제품 안에서 Application, Server, Database 등의 dimension이 존재할 수 ..

AWS/AWS Marketplace 2024.01.16

모니터링 데이터에는 LLM를 어떻게 붙여야할까?

1. 들어가며 알파고와 이세돌의 경기가 있었던 날이 2016년 3월이니, 벌써 거의 8년 전의 일입니다. 작년 2023년에는 GPT-4가 세상에 나왔습니다. 1년마다 정말 큰 변화를 맞이하고 있습니다. 모니터링 데이터 속에서 하루 하루를 살아가다보니 LLM의 흐름을 모니터링 데이터의 관점에서 생각해보게 되었습니다. 텍스트 데이터만 입력으로 받는 LLM을 모니터링 데이터에 어떻게 적용할 수 있을까요? 2. Elastic은 어떻게 했을까? 2.1. Vector DB 조금만 알아보기 Elastic Search는 내부적으로 Vector DB를 사용합니다. Elastic Master Class에서는 “Lucene을 세계 최고의 Vector DB로 만들겠다”고 선언하기도 했습니다. 그러면 이 Vector DB는 무..

DEV/INSIGHT 2024.01.02

경력기술서(2023.12)

와탭랩스 AWS Marketplace SaaS Integration 2023.11 ~ 현재 (약 2개월, 기여도 100%) AWS Marketplace SaaS Integration API 연동 기존 사내 시스템 미터링 체계 파악 및 문서화 로그 모니터링 서비스 개발 2021.11 ~ 현재 (약 2년, 기여도 100%) 문자열 메트릭 검색 엔진의 로직 이해 및 문서화 로그 모니터링 서비스 고도화 원본 로그 검색 기능 개발 인덱스 기반 로그 건수 조회 기능 개발 트랜잭션 로그 조회 기능 개발 실시간 로그 알림 기능 개발 라이브 테일 기능 개발 기타 서비스에 필요한 모든 기능 (전처리(파싱), 저장, 삭제, 검색, 차트, 인덱싱, 통계, 알림) Distributed File System (이하 DFS) 로직..

행운개발자 2023.12.30

이력서 (2023.12)

Contact hwanseok.dev@gmail.com 010-9217-2041 github.com/hwanseok-dev linkedin.com/in/hwanseok951226/ Summary Java & SpringBoot 기반의 3년차 서버 백엔드 개발자로서 와탭랩스에서 모니터링 서비스를 만들고 있습니다. 주로 높은 부하의 시계열 메트릭을 대상으로 수집, 가공, 저장, 조회, 통계, 알림을 담당하는 컴포넌트들의 고도화를 담당했습니다. 특히 알림 기능 의 고도화 작업을 약 1년간 담당했으며, 로그 모니터링 서비스 를 개발 초기 단계부터 현재까지 약 2년간 담당하고 있습니다. 와탭 로그 모니터링은 SaaS 환경에서는 1일 최대 23억건 (약 160만건 / 1분)의 로그를 수용하고 있으며, On-Prem..

행운개발자 2023.12.30

Java Thread Tutorial | Thread 생성부터 synchronized까지

STEP 1. 메인 쓰레드, 백그라운드 쓰레드 자바 프로그램을 실행하면 쓰레드가 항상 실행됩니다. GC 등을 위해서 백그라운드에서 실행되는 쓰레드도 존재합니다. class HelloWorld { // main 메서드를 실행시키는 하나의 쓰레드가 반드시 동작함 public static void main(String[] args) { System.out.println("Hello World"); } // GC 등 백그라운드 쓰레드도 함께 실행됨 /** * Hello World * * Process finished with exit code 0 */ } STEP 2. 멀티 쓰레드가 필요한 이유 아래의 코드에서 네트워크 작업은 3초, 디스크 작업은 5초가 소요되도록 설정했습니다. 멀티 쓰레드 없이 순차적으로 수..

DEV 2023.11.30

블로그 소개

안녕하세요. 행운개발자입니다. 기술적 지식과 깊이 개발자 커리어 일상과 행복 가만히 누워있을 때 주어지는 것은 아무것도 없습니다. 행운은 적극적으로 찾아나서는 사람에게 주어진다고 생각합니다. 더 좋은 회사를 가면 행복해질거야 돈을 더 많이 벌면 행복해질거야 더 나은 미래를 위해서 현재의 시간을 투자하는 것은 정말 중요합니다. 하지만 지금 당장 마음가짐 하나만 바꿔도 지금 당장 행복해질 수 있습니다. 본 블로그에서는 '백엔드 기술'과 '개발자 커리어를 쌓아가는 마음가짐'에 대해서 이야기합니다.

행운개발자 2023.11.26

본인 소개

안녕하세요 장환석입니다. 찾아주셔서 감사합니다. 자기소개 Java & SpringBoot 기반의 3년차 서버 백엔드 개발자로서 와탭랩스에서 모니터링 서비스를 만들고 있습니다. 주로 높은 부하의 시계열 메트릭을 대상으로 수집, 가공, 저장, 조회, 통계, 알림을 담당하는 컴포넌트들의 고도화를 담당했습니다. 특히 알림 기능 의 고도화 작업을 약 1년간 담당했으며, 로그 모니터링 서비스 를 개발 초기 단계부터 현재까지 약 2년간 담당하고 있습니다. 와탭 로그 모니터링은 SaaS 환경에서는 1일 합산 23억건 (최대 330만건 / 1분)의 로그를 수용하고 있으며, On-Premise 환경에서는 최대 6,000대의 서버에서 발생하는 로그를 모니터링하고 있습니다. 와탭 로그 모니터링의 문자열 메트릭 검색 엔진은 사..

행운개발자 2023.11.26

직접 구현하는 데이터 플랫폼 | 01. 데이터 수집 계층

1. 들어가며 요즘 이 책에서 '한글'로 설명하는 내용을 '코드'로 구현해보고 있습니다. 회사에서 업무 일정이 조금 빠듯하고 지칠 때도 있지만, 그래도 최근에 이 책을 정말 재밌게 읽고 있습니다. 내용이 좀 딱딱할 수 있지만 한 줄 한줄이 지금까지 쌓은 인사이트들의 집합이라는 생각을 하면서 추가했습니다. 재밌게 읽으실 수 있기를 바랍니다. 모든 코드는 hwanseok-dev/data-platform에 포함되어 있습니다. 본문에서 다루는 코드는 ingest-2023-11-17 태그를 기준으로 작성되었습니다. 2. 수집 계층이란 데이터 플랫폼에서 수집 계층은 소스 시스템에서 데이터를 가져오는 역할을 합니다. 소스 시스템에서 생성 및 수집된 데이터를 우리의 서버로 가져오는 첫 번째 관문입니다. 3. 소스 시스..

DEV 2023.11.17