[OpenAI] Response API와 Structured Outputs 이해하기
·
BackEnd/AI & LLM
· 들어가며AI 기능을 서비스에 붙이다 보면,모델이 그럴듯한 문장을 잘 만들어주는 것만으로는 부족할 때가 많습니다. 사람이 읽을 답변이라면 자연어 문장만으로도 충분하지만,서버가 그 값을 저장하거나 DTO로 변환하거나 프론트엔드 화면에 일정한 형태로 보여줘야 한다면 이야기가 달라집니다. 예를 들어 사용자가 모델에게학생들의 성적을 보내고, 분석하는 작업을 시킨다고 해봅시다. 국어 95점, 영어 80점, 수학 70점입력을 토대로 "이 성적을 분석해줘" 라고 시켜봅시다.평균은 81점이고, 가장 잘한 과목은 국어입니다.언어 영역(국어·영어)은 강점을 보이지만, 수학 학습을 보완하면 더욱 균형 잡힌 성적을 기대할 수 있습니다. 대충 이런식으로 정리를 해주는데, 이는 사람이 보기에는 충분히 이해가 되는 답변입니다. ..
[Security] Spring Security 구조 파해치기
·
BackEnd/Security
· Spring Security- Spring Security란?우선 Spring Security가 무엇인지에 대해 알아보겠습니다. Spring Security는 모든 HTTP 요청을 Filter Chain에서 가로채고,Authentication(인증) & Authorization(인가)를 처리한 후통과한 요청만 Controller로 보내는 보안 프레임워크입니다. 위 과정을 도식화하면 다음과 같습니다.Client Request → Security Filter Chain → Authentication → Authorization → Controller · Spring Security 인증 흐름 알아보기Spring Security 인증 흐름을 이해하기 위구성 요소들을 하나하나 알아보겠습니다- ..
[Security] JWT 인증 구조 이해하기 (Access Token & Refresh Token)
·
BackEnd/Security
· JWT(JSON Web Token)란?JWT(JSON Web Token)는로그인 및 인증 과정에서 사용자의 인증 정보를 안전하게 전달하기 위한 토큰 기반 인증 방식입니다. JWT는 인증에 필요한 정보들을 하나의 토큰으로 만들어Client와 Server 간에 주고받으며,Server가 별도의 인증 상태(Session)을 유지하지 않는 Stateless 인증 방식입니다. · JWT의 구조 (3요소)JWT는 다음 3가지 요소로 구성되어 있으며,각 요소는 .(마침표)로 구분되어 하나의 문자열로 전달됩니다.Header.Payload.SignatureJWT는 JSON 형태의 데이터를 HTTP Header 등에 안전하게 전달하기 위해서 Base64 인코딩을 사용합니다. Base64 인코딩은 암호화가 아니며, 누구나..
[SpringBoot] Entity 설계 - Cascade 옵션은 언제 써야 할까
·
BackEnd/SpringBoot
· 들어가며JPA로 Entity 연관관계를 설계하다 보면다음과 같은 코드를 한 번쯤은 보게 됩니다.@OneToMany(cascade = CascadeType.ALL)private List orderItems = new ArrayList(); 처음에는 "연관된 Entity까지 한 번에 저장해 주니까 편하네?"라고 생각하고 cascade 옵션을 사용하게 됩니다. 하지만 cascade는편의 기능이 아니라, 연관된 Entity의 생명주기를 어떻게 관리할 것인지에 대한 설계 옵션입니다. 이번 글에서는 Cascade 옵션이 무엇인지,그리고 언제 사용해야 하고 언제 사용하면 안 되는지를 정리해 보겠습니다. · Cascade- Cascade란?Cascade는 부모 Entity의 상태 변화가 자식 Entity에게 전파되..
[SpringBoot] Entity 설계 - 모든 연관관계는 LAZY로 시작해야 하는 이유
·
BackEnd/SpringBoot
· 들어가며JPA로 Entity 연관관계를 매핑하다 보면fetch 옵션을 한 번쯤은 마주치게 됩니다.@ManyToOne(fetch = FetchType.LAZY) 이번 글에서는 Member-Order 예제를 기준으로연관관계 로딩 전략인 EAGER / LAZY에 대해 각각 알아보고,왜 LAZY를 기본으로 가져가야 하는지 정리해 보겠습니다. · 로딩 전략JPA에서 연관관계 로딩 전략은연관된 Entity를 언제 조회할 것인지를 결정하는 설정입니다.- EAGER (즉시 로딩)EAGER 로딩 전략은 연관된 Entity를 즉시 함께 조회하고,Entity를 조회하는 시점에 JOIN 또는 추가 쿼리가 발생합니다.@ManyToOne(fetch = FetchType.EAGER)private Member member;- L..