일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Git
- Study
- 아이비시트
- Log
- 자바8
- db
- aws lambda
- ibsheet
- AWS Glue
- java8
- AWS SQS
- JavaScript
- aws S3
- athena
- AWS Athena
- s3
- 카이호스트만
- Java
- 환경 구성
- function
- #jQuery
- 자바
- 인텔리J
- jQuery
- naver smartEditor
- 자바스크립트
- 환경구성
- intellij
- AWS
- 로그 데이터
- Today
- Total
목록Java (13)
애매한 잡학사전
아래 링크의 로그 데이터 처리하기에서 S3에 로그 파일을 업로드하는 배치 프로그램을 개발했었는데 비슷한 로그 파일 및 통계 프로그램들이 늘어서 비슷한 배치 프로그램도 계속 추가되어야 하는 상황이 발생하였습니다. 그래서 고민하다 DI 적용으로 코어 로직은 그대로 두고 옵션 형태로 조건만 변경해서 동작하는 방식으로 리팩터링을 진행하여 정리하고자 합니다. AWS Athena, Glue, S3 활용으로 로그 데이터 처리하기 with Batch 1. Flow - Batch 프로그램으로 별도의 시스템을 사용하지 않고 바로 S3로 데이터를 저장하는 프로세스 2. 환경 세팅 - 내용이 너무 많아 별도로 정리 하였습니다. 각 링크를 참고하시면 되겠습 dev-gabriel.tistory.com 순서는 다음과 같습니다. 1..
아래의 표와 같은 날짜가 동적으로 변경되는 List를 화면에 출력할 때 일반적인 RDB에서는 PIVOT 기능을 활용하여 쿼리를 아래 표와 같은 모양으로 실행하면 쉽게 구현할 수 있습니다. 그러나 AWS Athena에서는 아래 표와 같은 모양으로 쿼리를 실행할 수 없어서 JAVA에서 List를 만들어 주려고 합니다. 회사 코드 회사 명 2022-01-01 2022-01-02 2022-01-03 2022-01-04 2022-01-05 ... COMP001 우리회사 100 200 110 110 123 ... COMP002 니네회사 200 330 111 220 444 ... Athena Table 구조 Athena 테이블 구조는 다음과 같이 같단하게 구성하였습니다. CREATE EXTERNAL TABLE ex_..
데이터베이스에 있는 데이터를 조회해서 AWS Athena에 저장하는 Java 배치 프로그램을 만들면서 DB manager를 구현했는데 정리해 보려고 합니다. 바로 클래스를 생성해서 구현할 수 있지만 이번에는 의존성 주입(DI : Dependency Injection) 연습을 위해 인터페이스로 생성했습니다. 제가 정리할 내용은 다음과 같습니다. - DB manager 인터페이스 생성 - DB manager 클래스 생성 및 인터페이스의 abstract method 구현 DB manager 인터페이스 생성 의존성 주입을 위해 인터페이스를 생성합니다. 처음 생각했을 때는 필요한 method는 connection, close 이렇게 2개였지만 조금 더 생각을 하다 보니 기본적인 CRUD 기능을 별도의 클래스로 구..
개요 현재 시스템이 운영 DB와 통게, 로그 데이터가 한 곳에 있어 사용자가 많을 때는 통계나 로그 데이터를 활용할 수 없는 상황이었습니다. 그래서 AWS Athena를 적용 시켜 로그, 통계 데이터를 이관 처리를 하고 Web에서 활용할 수 있는 방법을 구현 하였고, 만족할만한 결과가 나왔습니다. 혹시 환경 구성이 궁금하시면 하단의 링크를 통해서 확인할 수 있습니다. 그래서 이 블로그에 작성할 내용은 Java 에서 AWS Athena로 Query를 실행시켜 간단한 게시판을 만들어 보려고 합니다. 1. DataSearchInAthena 클래스 1) AWS 접근 권한 - AWS Athena accessKeyId 와 secretAccessKey 를 발급 받아서 AWS 접근할 수 있는 권한을 생성합니다. /**..
1. 개요 - 상황 1) 사용자가 Web에서 클릭한 모든 기능에 대해 데이터베이스에 저장 2) 하루 평균 40만 ~ 50만 건의 데이터가 저장 3) 현재까지 약 4억 건의 데이터가 저장 되어 있음 4) DBMS에서 쿼리 실행 시 Web 사용자가 많을 경우 DB lock 현상이 발생 5) 운영 DB와 Data log 데이블이 한 서버에 있어서 log 데이터 조회 시 DB 커넥션 증가 : 위 상황으로 인해 log data를 효율적으로 활용할 수 있게 새로운 시스템으로 이관이 필요해 진행 하였고 히스토리를 정리하려고 합니다. 2. 환경 - 데이터베이스 : MS-SQL - 개발언어 : JAVA - 도입 시스템 : AWS S3, AWS Athena, AWS Lambda, AWS SQS, AWS Glue, Java..
1. Flow - Batch 프로그램으로 별도의 시스템을 사용하지 않고 바로 S3로 데이터를 저장하는 프로세스 2. 환경 세팅 - 내용이 너무 많아 별도로 정리 하였습니다. 각 링크를 참고하시면 되겠습니다. 2-1. Batch - 일반 Java application (maven) 프로젝트 생성 2-2. AWS S3 로그 데이터 처리를 위한 AWS S3 환경 구성 - 버킷 생성 : 버킷 이름 작성 후 나머지 옵션들은 그냥 기본으로 놓고 스크롤 제일 하단으로 내린 후 버킷 만들기 버튼 선택 dev-gabriel.tistory.com 2-3. AWS Glue 로그 데이터 처리를 위한 AWS Glue 환경 구성 1. AWS Glue Crawler 추가 - 클롤러 추가 버튼 클릭 합니다. - 크롤러 이름을 입력 ..
1. Flow - Redis, Batch 프로그램 사용 2. 환경 세팅 - 내용이 너무 거대해지는 것 같아서 별도로 정리하였습니다. 각 링크를 참고하시면 되겠습니다. 2-1. Redis 개발(로컬) PC에 REDIS 테스트 환경 세팅 - 2022년 6월 27일 Redis for windows 는 공식적으로 지원하지 않기 때문에 개발pc에서 테스트를 하고 싶을 경우 Microsoft Store에서 Ubuntu 22.04 LTS 를 설치해서 사용할 수 있습니다. - 공식 홈페이지 Redis R.. dev-gabriel.tistory.com 2-2. AWS S3 로그 데이터 처리를 위한 AWS S3 환경 구성 - 버킷 생성 : 버킷 이름 작성 후 나머지 옵션들은 그냥 기본으로 놓고 스크롤 제일 하단으로 내린 ..
'카이 호스트만의 코어 자바 8'을 기준으로 정리하였습니다. [자바8] 람다 표현식 - 1장 '카이 호스트만의 코어 자바 8'을 기준으로 정리하였습니다. 1. 람다 표현식 - 1 ~ n번 실행할 수 있게 전달하는 코드 블록 - 자바에는 함수 타입이 없기 때문에 객체로 표현 - 파라미터 변수가 있는 dev-gabriel.tistory.com 6. 자신만의 함수형 인터페이스 구현 - 표준 함수형 인터페이스가 적합하지 않을 경우 직접 구현해야 한다. /* 함수형 인터페이스 */ @FunctionalInterface public interface PixelFunction { Color apply(int x, int y); } /* 메서드 구현 */ BufferImage createImage(int width, ..
'카이 호스트만의 코어 자바 8'을 기준으로 정리하였습니다. 1. 람다 표현식 - 1 ~ n번 실행할 수 있게 전달하는 코드 블록 - 자바에는 함수 타입이 없기 때문에 객체로 표현 - 파라미터 변수가 있는 표현식 : 오래전 컴퓨터가 없던 시절에 논리학자 안론조 처치는 수학 함수로 효과적인 계산을 할 수 있도록 관련 내용을 공식화 하려고 했다. : 파라미터를 표기하는데 그리스 문자 람다(λ)를 사용했다. : 공신력 있는 수학 원리 책에서 함수 파라미터를 나타내는 데 악센트 ^를 사용했는데 알론조 처치는 여기서 영감을 얻어 대문자 람다(Λ)를 사용했고, 나중에는 소문자 람다(λ)로 바꿨다. 2. 람다 표현식 문법 2-1. 일반 자바 메서드 public int strLength(String first, Str..
'카이 호스트만의 코어 자바 8'을 기준으로 정리하였습니다. [자바8] 인터페이스 java 8 interface - 1장 '카이 호스트만의 코어 자바 8'을 기준으로 정리하였습니다. 인터페이스 (interface) - 객체지향 개발 5대 원칙 (SOLID) 을 지켜줄 수 있는 도구 - 개발 소스 코드의 수정을 최소화 하고 유지보수성을 dev-gabriel.tistory.com 6. 상수 public interface SwingConstants{ [public static final] int NORTH = 1; [public static final] int NORTH_EAST = 2; [public static final] int EAST = 3; ... } - 인터페이스에 정의한 변수는 자동으로 publ..