일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring batch
- 자바
- 스프링 시큐리티
- 데이터베이스
- 백엔드
- 스프링 부트
- virtualization
- 영속성 컨텍스트
- vm
- mysql
- Container
- 스프링
- computer science
- 도커
- CS
- 가상화
- 웹 서버
- 스프링 배치
- HTTP
- spring cloud
- 컨테이너
- web server
- Spring
- Spring Security
- CI/CD
- ORM
- Java
- spring boot
- 배포
- JPA
- Today
- Total
목록전체 글 (138)
개발 일기

드링크리 프로젝트에서는 가게(Store) 정보를 관리하는 과정에서 가게에 등록된 여러 개의 이미지를 저장해야 했고 이를 위해 store_image 테이블을 별도로 분리하여 관리하기로 했다.id이미지의 고유 ID (PK)store_id가게 ID (FK)storeImageUrl이미지 URLstoreImageType이미지 타입 (메뉴, 내부, 기타 등)storeImageDescription이미지 설명이때, 특정 가게(store_id)에 속한 이미지를 빠르게 조회해야 하는 경우가 많기 때문에 MySQL Index를 적용해서 기존 방식과 성능 비교를 해보기로 했다. 조금 더 구체적으로 왜 인덱스를 도입하고자 하는지 정리해보겠다. 왜 인덱스를 도입하고자 하는가?100만 건 이상의 데이터에서 인덱스 기준이 하나도 잡..
프로세스 : 메모리상에서 실행 중인 프로그램스레드 : 프로세스가 할당받은 리소스를 가지고 실제로 실행되는 작업의 단위 (Execution of Unit)시작하기에 앞서 우리가 흔히 프로그램과 프로세스라는 단어를 많이 쓰는데 이 둘을 확실하게 구분하고 갈 필요가 있을 것 같다.💡 프로그램(Program)과 프로세스(Process)의 차이정의실행 가능한 정적인 코드실행 중인 동적인 개체저장 위치디스크(SSD, HDD)에 저장됨메모리(RAM)에서 실행됨상태실행되지 않음 (정적인 상태)실행 중 (동적인 상태)생명주기실행되지 않으면 계속 존재실행이 끝나면 사라짐예제Safari.app, IntelliJ IDEA.app, chrome.exechrome.exe가 실행 중인 상태EX) IntelliJ IDEA → 즉,..

드링클리 프로젝트에서 멤버 회원가입 로직을 구현하는 과정에서 두 가지 주요 작업을 처리해야 했습니다. 첫 번째는 DB에 유저 정보를 저장하는 작업, 두 번째는 팀 Slack 채널에 회원가입 요청이 들어왔고 처리되었다는 정보를 전달하는 작업입니다. 처음에는 두 작업 모두 동기 방식으로 처리했지만, Slack 처리 부분은 반드시 동기적으로 처리할 필요가 없다고 판단하게 되었습니다. 이를 통해 성능을 개선할 수 있을 것이라 생각하여, Slack 처리 부분을 비동기 처리 방식으로 변경하기로 했습니다. 이 과정에서 ApplicationEventPublisher와 같은 비동기 처리 기법을 활용해 두 방식의 성능 차이를 비교해보기로 했습니다. 1. 단순 동기 처리 방식위 코드에서처럼 처음에는 회원가입 로직을 동기 ..

드링클리 프로젝트에서 모놀리틱에서 마이크로서비스로 전환하게 되면서 한 가지 의문이 발생했었습니다.기존 모놀리식 시스템에서는 단일 데이터베이스 내에서 모든 작업이 하나의 트랜잭션으로 묶여 원자성이 보장되었지만, 마이크로서비스 환경에서는 각 서비스가 독립적으로 트랜잭션을 가져가기 때문에 원자성이 깨졌고 해왔던것 처럼 처리했을때 일관성있게 관리하는데에 한계를 느꼈습니다.그래서 MSA와 같은 분산환경에서는 어떻게 트랜잭션을 관리하는지 알아보고자 블로그를 작성하게 됐고 이때 토스에서 올린 세미나를 참고했다. 토스ㅣSLASH 24 - 보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기분산 트랜잭션이 필요한 이유?해당 예시에서 상황은 기존 Corebanking 시스템은 하나의 데이터베이스를 바라보고 있는 모놀리식 아..

드링클리 프로젝트에서 MSA로 전환하면서 Feign으로도 다 처리가능한데 왜 다들 Kafka 비동기 처리에 목숨을 거는건지 잘 이해가 되지 않아 정리하게 됐다.회원시스템 이벤트기반 아키텍처우선 Micro-Service Architecture 왜 필요한가?마이크로서비스는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 자향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다.이때 마이크로서비스 얘기가 나오면 Event-Driven Architecture가 나오는 이유 또한 이 이벤트 기반 아키텍처가 느슨한 결합을 돕기 때문이다. 왜 느슨한 결합이 필요한데?정보처리기사나 Software Engineering과목을 수강하면서 수도 없이 들은 Coupling 낮추기를 반복적으로 학습했었..

하나 금융 그룹에서 진행한 프로젝트에서 프롬프트 엔지니어링이 할 일이 있었어서 최적 화 기법들에 대해서 정리해보았다. 우선 프롬프트 엔지니어링이 뭘까?프롬프트 엔지니어링(Prompt Engineering)최근 약 3년동안 Chat GPT / BARD / LLaMA 그리고 최근에는 DeepSeek 까지 다양한 생성형 AI 모델들이 IT 시장에서 뜨가운 감자이다.프롬프트 엔지니어링은 위와 같은 대규모 언어 모델(Large Language Model, LLM)에서 원하는 결과를 얻기 위해 프롬프트를 공들여 만들고 최적화하는 과정이다.적절한 프롬프트의 설계는 LLM 성능을 크게 향상 시킬 수 있다고 한다. 그렇다면 프롬프트란 무엇일까? AI 모델에서 출력을 생성하기 위해 입력하는 텍스트 이다.프롬프트의 구..

작년 하반기 내내 하나 디지털 파워온 프로젝트 3기에 참가하였고 본선을 통과하여 12월에 최종 성과 공유회까지 참여했습니다.본선때 저희는 대한민국에서 큰 문제가 되고 있는 전세사기 문제를 해결해보고자 OCR 및 생성형 AI를 통한 전세 사기 탐지 및 경고 서비스를 기획 및 개발 했습니다. 저희는 크게 두개의 솔루션을 통해 해결하고자 했습니다.원클릭 종합 안전도 리포트 : 거래 전 매물의 전세사기 위험도 분석파인 튜닝 전세 챗봇 : 전세 계약 전반에서 도움을 주는 챗봇 서비스 위의 두 가지 솔루션 중에서 저는 학부생에 백엔드 & 인프라를 담당했다 보니 Solution1의 구현에 포커싱했습니다.전체적인 파이프라인은 아래와 같이 구축했습니다. 프론트로 부터 입력받은 주소를 기반으로 API를 통해 해당 매물에 ..
SQLD를 공부했었는데 그때 윈도우 함수에 대해 제대로 이해하지 못하고 통과 해버린 것 같았다.SQL을 공부하면서 뭔가 그룹을 지어서 그 그룹에 대한 통계를 내는 용도로 쓰이는 걸 봤는데 GROUP BY랑 도대체 뭐가 잘 알지 못했다.그래서 도대체 뭐가 다른지 그리고 어떻게 쓰이는지에 대해 간단히 정리해보게 됐다.윈도우 함수(Window Function)SQL의 윈도우 함수란 행과 행 간을 비교, 연산, 정의하기 위한 함수이다. 분석함수 또는 순위함수라고 하기도 한다. 다른 함수들처럼 중첩해서 사용할 수는 없지만 서브쿼리에서는 사용가능하다.❓그래서 GROUP BY랑 뭐가 다른데?가장 큰 차이는 아마 결과(출력) 방식. 즉, 데이터의 유지 방식인 것 같다.조금 더 풀어서 설명해보자면 GROUP BY의 경우..