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

개요이번에 사내 스터디로 진행했던 데이터 플랫폼 설계와 구축 책 내용을 정리해보았습니다. 후기에서도 볼 수 있듯이 번역본이라 힘 들여서 읽어야 하는 부분도 있긴 하나, 전반적으로 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..

개요아무 생각 없이 인증처리를 안 해놓은 벌로 누군가의 침입이 일어났다.. 😱어쩐지 람다 함수 절반이 안 돌아서 데이터를 살펴보니 누군가.. 백준에 없는 아이디와 이름을 넣어놨다. 심지어 스터디에도 넣어놨넴... 😵 인증처리를 미리미리 해뒀으면 좋았겠지만, 지금이라도 코알라 임원진끼리만 공유할 수 있는 비밀번호 처리를 해두는 것이 좋겠다 .Spring SecuritySessionSpring Security는 기본적으로 JSESSION_ID라는 이름을 가진 세션 방식의 인증 메카니즘으로 인증을 처리한다. Spring Security를 공부하다 보면 JWT 개념에 대해서도 같이 공부하게 되는데, 토큰(JWT) 방식과, 세션 방식은 엄연히 다른 내용이므로 이에 대해 알고 가야 한다 !세션에 대한 내용에 대..