일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- curl
- monitoring
- API Gateway
- OpenSource
- devops
- elastic search
- mybatis
- pyannote
- jwt-java
- fosslight
- konga
- C++
- umc
- Nice
- 하이브리드 데이터 모델
- docker
- metricbeat
- prometeus
- template/callback
- 메소드
- 화자분리
- roll over
- java
- supabase
- kong
- DI
- Spring
- 자료구조
- ELK
- 파이썬
- Today
- Total
목록BackEnd (51)
youngseo's TECH blog

ETL 파이프라인 과정에서 사용했던 Spring Batch를 사용하며 경험할 수 있는 장점들을 소개하려고 합니다.기존에 사용했던 배치 처리 방식에는 linux tab에서 제공해주는 cron job이나 Spring의 @Scheduler 정도만 알고 있었는데, Spring Batch를 쓰면서 배치잡 처리의 더 많은 부분들에 인사이트를 얻을 수 있었습니다. Spring Batch의 동작 과정전반적인 핵심 컨셉은 Reader(E) -> Processor(T) -> Writer(L) 의 흐름입니다.Reader - 데이터베이스, 파일, 큐에서 다량의 데이터 조회Processor - 특정 방법으로 데이터를 가공Writer - 데이터를 수정된 양식으로 다시 저장이 흐름을 실제로 제어해주는 스프링 배치의 단위를 하나씩 ..

개요이번에 사내 스터디로 진행했던 데이터 플랫폼 설계와 구축 책 내용을 정리해보았습니다. 후기에서도 볼 수 있듯이 번역본이라 힘 들여서 읽어야 하는 부분도 있긴 하나, 전반적으로 ETL 과정에서 놓치기 쉬운 부분들을 보기 쉽게 정리해두어서 공부에 도움이 많이 되었습니다 🤩Extract: 하나 또는 그 이상의 데이터 원천들로 부터 데이터 추출Transform: 추출한 데이터를 요구사항에 맞게 변경하는 작업Load: 변형 단계의 처리가 완료된 데이터를 특정 목표 시스템에 적재회사에서, 외부 업체에서 받아온 데이터들을 사내 데이터 스키마에 맞게 가져와 적재하는 프로세스를 구축하는 작업을 진행했다. 당시 작업 내용을 회고하고, 이후 다른 형태의 ETL 작업을 경험할 수도 있으니 다방면의 상황에서의 해결방법을 ..

과제진행 중인 프로젝트에서 검색 기능 구현 과제를 맡게 되었다. 키워드(ex. 헤어)를 인풋으로 받아 요청하면, 키워드가 포함된 포트폴리오 리스트들을 반환받아야 한다. 단순히 MySQL의 LIKE, OR 문법을 사용하여 구현할 수 있지만, OpenSearch(ElasticSearch) 검색엔진을 사용하게 되면 역인덱싱이 가능하기에 훨씬 빠르게 검색 기록을 가져올 수 있다. ElasticSearch(OpenSearch)의 역인덱싱 로직에 대한 설명은 이전 블로그 글에서 참고할 수 있다. AWS OpenSearch vs ElasticSearchAWS OpenSearch는 ElasticSearch를 기반으로 만들어진 툴이다. ElasticSearch와 OpenSearch의 역사(?)를 알아보면 재미있는 내용들..

Lost Update 문제Tomcat(Java/SpringBoot)와 같은 멀티쓰레드 환경에서 트랜잭션 격리 수준으로 온전히 해결되지 않는 동시성 문제가 있다. 바로 Lost Update 현상이다. 아래 예시를 살펴보자. A 트랜잭션이 data를 0으로 읽었고, B 트랜잭션이 끼어들어 data를 0으로 읽었다. (잘못 읽었음에도) A는 +1 연산을 수행하고 B 또한 +1 연산을 수행한다. 최종적으로 원한 값은 2였으나 Update 하나를 잃어버려 +1의 결과값을 갖게 되었다.결론부터 말하면, 이 문제를 해결하기 위해 DB Lock 을 사용할 수 있다.문제가 되는 코드아래는 Member가 WishList를 추가하는 과정에서 Portfolio에 wishListCount 필드를 +1 해주는 과정이다.우선 요청..

모두가 알다시피 인증 기능 구현은 매우 무겁다 😬현재 진행 중인 프로젝트는 모바일 기반 플랫폼 서비스로, OAuth2.0를 사용한 카카오, 구글, 애플 로그인을 구현하는 것을 목표로 하고 있다. 그러나 소셜 로그인 기능의 경우 메인로직이 아닐 뿐더러, 유저 입장에서 거부감도 심하게 들 것이고, 우리 팀도 OAuth2.0를 모두 이해해 구현하기에는 2주 정도의 시간이 허비될 것 같아 간단히 유저만 구분할 수 있는 로직으로 1차 배포를 진행하기로 하였다.SpringSecurity 를 사용한 이유SpringSecurity는 Springboot로 들어오는 Request/Response와, 실질적인 CRUD를 처리하는 DispatcherServlet 사이의 Filter chain 형태로 이루어져 있다. (Req..

S3S3는 AWS에서 가장 처음 런칭한 프로젝트라고 한다. 이미지 저장소로 잘 알고 있는 이 S3, Simple Storage Service에 이미지 저장소를 만들어보자.S3 Object의 구성요소Key - 파일의 고유 식별자로, bucket/test/example.png와 같은 고유한 파일 경로를 의미한다.Value - 파일의 내용(예: 이미지 바이너리 데이터, 텍스트 데이터)Version ID - 파일의 버전 아이디로, 같은 파일명이나 다른 버전으로 올리고 싶을 때 사용한다. 이를 통해 롤백 가능!Metadata - 데이터의 데이터라고도 불리는, 파일의 정보를 담은 데이터를 의미한다.(예. 최종 수정일, 파일 타입)CORS(Cross Origin Resource Sharing) - 한 버킷의 파일을 ..

프로젝트를 본격적으로 수행하기 전에 CI/CD를 미리 구축해 놓기로 하였다. 🙌CI/CDCI/CD는 지속적 통합/배포 환경을 뜻한다. 여러 명의 개발자가 함께 작업하는 과정에서 꼭 필요한 작업이다. CI를 통해 코드를 지속적으로 통합(PR 후 merge 과정으로 이해해도 좋음)할 때 이를 자동으로 테스트하여 충돌이나 버그를 최소화할 수 있으며, CD를 통해 지속적으로 통합된 코드를 자동으로 프로덕션 환경에 배포할 수 있다.무중단 배포CD 과정에서 무중단 배포가 존재하지 않는다면 이 세상 서비스들은 모두 업데이트 시 사용자를 blocking해야 하는 불상사가 일어날 것이다!! 이를 막기 위해 무중단 배포가 필요하다.간단하게 무중단 배포 방식을 알아보자.Rolling 배포 구버전에서 신버전으로 점진적으로 ..

Template 메소드 패턴과 Callback 패턴에 대해 우선 따로따로 이해해보는 게 좋겠다 ! (이론 -> 구현 내용 순으로 구성하였습니다.)이론Template 메소드 패턴(문제 상황) 핵심 기능 & 부가 기능이 모조리 섞여 있는 문제 (해결 방법) 변하는 것과 변하지 않는 것(반복되는 코드)을 분리하겠다 !-> 상속으로 푼다.이론보다 , 코드 샘플로 이해해보자!AbstractTemplate (변하지 않는 부분, 반복되는 부분)이 부분이 바로 Template, 우리가 아는 파워포인트 템플릿과 비슷하게 변하지 않는, 반복되는 부분에 해당한다.package hello.advanced.trace.template.code;import lombok.extern.slf4j.Slf4j; @Slf4jpublic a..