전체 글 18

JPA Entity 기초

JPA(Java Persistence API)는 Java ORM 표준 기술입니다. JPA를 처음 접할 때, 제일 먼저 할일은 Entity와 DB Table간의 연관성을 파악하는 것입니다. 이 글에서는 Entity를 처음 만들 때 필요한 개념을 설명하면서 DB Table과의 관계가 어떻게 되는지 살펴보는 시간을 가져보겠습니다. Entity는? @Entity는 식별성이 필요한(Identity) 객체를 만들 때 사용합니다. 이와 반대 개념으로 식별성이 필요 없는 객체를 만들 때에는 Value Object(VO)로 만듭니다. Entity를 만든다는 것은 RDB의 테이블과 테이블 칼럼으로 매핑하는 것입니다. Entity의 Class명이 RDB의 테이블 이름이 되고 Entity의 field값이 테이블의 칼럼과 매핑..

Tech 2022.07.08

Apache Hive 쿼리 오류 해결 방안

대부분의 Hive 쿼리는 초기에는 잘 실행되다가 누적 데이터가 증가하면서 여러가지 오류가 발생을 합니다. 아래 오류 외에도 많겠지만, 업무를 진행하며 가장 많이 맞닥뜨리는 오류 4가지를 추렸습니다. java.lang.OutOfMemoryError: Java heap space 오류 MapJoinMemoryExhaustionError 오류 AllocatorOutOfMemoryException: entire cache is fragmented and locked or, an internal issue 리소스 할당을 못받고 대기하는 경우 그럼, 각 오류별 해결 방법에 대해서 알아보겠습니다. 1. java.lang.OutOfMemoryError: Java heap space 오류 ERROR : Vertex fa..

Tech 2022.06.27

Git GUI 소스트리(SourceTree) 활용 - Custom Action 기능

개발에 있어서 코드 형상 관리는 필수입니다. 형상관리툴은 Git, SVN 등이 있습니다만, 최근에는 Git을 많이 사용하고 있습니다. Git은 기본적으로 CLI 형태로 사용을 하게 되는데요, 매번 CLI를 입력해야 되고, 수많은 명령어와 옵션들을 모두 다 기억하기는 쉽지 않습니다. 그래서 IntelliJ, Eclipse, VS Code 등 IDE에서는 Git을 편리하게 쓸 수 있는 메뉴를 별도로 제공하고 있으며 Git GUI 클라이언트들도 있습니다. 대표적인 Git GUI 툴은 아래와 같습니다. GitHub : GitHub Desktop Atlassian : SourceTree TortoiseGit (Windows 버전만 제공) 저희는 Git으로 형상 관리를 하고 있으며 저장소는 BitBucket을 사용..

Tech 2022.06.13

속전속결! 모니터링 시스템 구축하기 (Zabbix 설치 및 설정)

안녕하세요. TG360 Technologies SE(System engineer) 담당자입니다. SE는 사전적으로 "서버나 하드웨어를 관리 및 유지를 담당하는 사람을 시스템 엔지니어"라고 흔히들 지칭합니다. 인프라스트럭쳐가 거대해짐에 따라 서버나 하드웨어를 관리하는데 있어서도 효율적인 시스템이 필요합니다. 저희 TG360은 최초에 사내 모니터링 시스템이 없고 타사 모니터링 시스템에 의존하여 서버를 관리하고 있었습니다. 실제 운영을 해보니 여러 문제점들이 보여서 자체 모니터링 시스템을 구축하고자 하였습니다. 기존의 문제점 신규 서버 모니터링 등록이 필요한 경우 타사에 요청이 필요하기 때문에 등록 시간이 필요 기존 타사에서 제공하는 모니터링 템플릿만 적용가능 하나의 알람 채널로만 알람 수신 가능 일부 협업을..

Infra 2022.05.24

Parquet 파일 구조와 관련 설정 값 이해하기

Parquet는 아파치 하둡 에코 시스템에서 사용하는 칼럼 기반의 데이터 저장 형식입니다. 여러 인코딩과 압축을 지원함으로써 다양한 프로젝트에서 인기리에 사용 중입니다. Parquet을 효과적으로 사용하는 데에는 많은 요소들을 살펴봐야 하지만, 이 번 글에서는 파일 구조와 관련된 설정값을 같이 보면서 Parquet을 보다 심층적으로 이해하는 시간을 가져보도록 하겠습니다. Parquet의 파일 구조 Parquet은 Header, Blocks, Footer. 이 세 형식을 가집니다. Header와 Footer는 Meta 정보이며, 각 1개씩만 존재합니다. Blocks는 List 형식이며 여기에 실제 N 개의 데이터가 저장됩니다. 이를 정리해 보면 아래와 같습니다. Header(Metadata) : Parqu..

Tech 2022.05.23

Apache Hive 를 이용한 온라인 행동 데이터 ETL

TG360 Technologies는 다양한 비식별 기반 데이터를 수집하여, 최고도의 빅데이터 기술, ML/AI 기반의 분석 알고리즘을 기반으로 새롭게 만들어진 데이터를 제공하고 있습니다. 데이터를 제공하기 전에, 정리하고 변환해야 합니다. Hive 를 이용한 ETL (추출, 변환, 적재) 작업은 데이터를 준비하고 제공 가능한 형태로 데이터를 적재하는데 사용됩니다. 1. Hive 란 하둡에서 동작하는 데이터 웨어하우스 인프라 구조로서 데이터 요약, 질의 및 분석 기능을 제공합니다. Apache Hive 데이터 웨어하우스 소프트웨어는 SQL을 사용하여 분산 스토리지에 있는 대규모 데이터 세트를 읽고, 쓰고, 관리하는 것을 용이하게 합니다. Hive 연결하기 위해 명령어 도구 및 JDBC 드라이버가 제공됩니다..

Tech 2022.05.10

RabbitMQ - SAC(Single Active Consumer)

개요 비동기 작업에서 큐를 사용하려면 중간에 메시지 브로커라는 개념이 존재하는데, 이러한 메시지 브로커에는 RabbitMQ, Kafka등이 있습니다. 해당 포스트는 표준 MQ프로토콜인 AMQP를 구현한 RabbitMQ 3.8과 함께 제공되는 특수한 기능인 SAC에 대해 다룰 것입니다. SAC에 대해 간략히 정리하면 다음과 같습니다. 대기열에서 SAC를 활성화하면 대기열은 더 이상 경쟁 consumer를 허용하지 않습니다. 하나의 SAC 사용 대기열에는 한번에 메시지를 적극적으로 소비하는 consumer가 하나만 있을 수 있습니다. 첫 번째 consumer가 Active 상태가 되면, 추가 consumer는 대기 상태에 있습니다. Active Consumer가 실패하거나 종료되면 다른 consumer가 ..

Tech 2022.04.06

Google Privacy Sandbox

2022년 2월 17일 구글에서 "안드로이드 앱 추적 제한" 발표가 있었습니다. 이미 발표되었던 크롬 브라우저에서의 3사 쿠키 제한의 연장선으로 안드로이드 운영체제의 사용자 개인정보 및 타겟 광고 처리방식을 변경할 것으로 충분히 에상할 수 있는데요, 이에 따라 2021년 4월 배포한 애플 iOS의 "앱 추적 투명성(ATT)" 정책으로 큰 타격을 입고 있는 Ad-Tech 및 소셜미디어 업체(ex. 메타 등)의 타격은 더 커질 것으로 보입니다. 하지만 구글은 애플과 다르게 기존 광고 생태계의 영향을 줄이면서도 사용자 개인 정보를 강화할 수 있는 방식을 찾아가고자 하며, 이를 위해 다수의 업체들과 협업을 하겠다고 밝혔습니다. 그럼 우리는 어떻게 대응해야 할 것인가?" 하는 물음에 답하기 위해 구글이 말하고자 ..

Tech 2022.03.07