일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 cloud
- 스프링 시큐리티
- ORM
- spring batch
- JPA
- CS
- 웹 서버
- CI/CD
- Java
- vm
- 자바
- virtualization
- 데이터베이스
- 스프링 배치
- web server
- 컨테이너
- 스프링 부트
- 백엔드
- 스프링
- HTTP
- computer science
- 영속성 컨텍스트
- Spring
- 도커
- 배포
- spring boot
- Spring Security
- 가상화
- Container
- mysql
- Today
- Total
목록2025/03 (9)
개발 일기
Necessities of cryptographic tools for Information Security1. Network Security: Becuase messages are sent over a public network, so the packet could be intercepted and modified.2. System Security: The data in memory and storage is usually protected by access control mechanisms.However, it can still be vulnerable to attacks such as unauthorized access. So, the sensitive data should be encrypted.?..

→https://ai-back-end.tistory.com/119 [Java] JVM 메모리 구조(Method-Static, Heap, Stack)그전에 JVM에 대해 다시 떠올려보자. JVM 이란 Java Virtual Machine의 약자이며, 자바 가상 머신이라고 한다.자바 애플리케이션을 실행하기 위한 가상 환경자바 바이트코드(.class 파일)를 특정 운ai-back-end.tistory.com이전에 작성했던 블로그에서 단순히 JVM안에만 갇혀서 생각했다가 타 프로그램이 실행됐을때와 뭔가 다르다는걸 알게됐다.프로그램이 실행될 때 소스 코드나 실행 파일이 가상 메모리를 거쳐 RAM에 로드되고, 그 과정에서 변수들이 메모리 영역(Code, Heap, Data, Stack)에 로드된다고 했는데 Java..

드링크리 프로젝트에서는 가게(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 모델에서 출력을 생성하기 위해 입력하는 텍스트 이다.프롬프트의 구..