전체 글

·Backend
공부를 하며 정리한 내용입니다. 틀린 내용이 있다면 알려주세요.감사합니다!🙇TL;DRMSA에서는 서비스마다 데이터베이스를 따로 소유하므로 여러 서비스의 작업을 하나의 로컬 트랜잭션으로 묶을 수 없습니다.Saga는 전체 작업을 여러 로컬 트랜잭션으로 나눕니다. 각 단계가 성공하면 다음 작업을 실행하고, 실패하면 앞에서 완료한 작업의 효과를 보상 트랜잭션으로 상쇄합니다.서비스별 커밋 시점이 다르기 때문에 PENDING, RESERVED와 같은 중간 상태가 발생합니다. 이후 모든 작업이나 보상이 끝나면 비즈니스 규칙에 맞는 최종 상태로 수렴합니다.Saga는 이벤트를 주고받는 Choreography 방식과 오케스트레이터가 흐름을 관리하는 Orchestration 방식으로 구현할 수 있습니다.이벤트 기반 Sag..
·Projects
공부를 하며 정리한 내용입니다. 틀린 내용이 있다면 알려주세요.감사합니다!🙇TL;DR채팅의 감정 분석을 담당한 AI가 명확한 감정이 보이지 않는 '중립'이라고 판단한 채팅이 진짜 그런 채팅이었다고 무조건적으로 믿을 수 없다.입력, 처리, 출력의 각 단계에서 AI를 더 효율적이고 의도에 부합하는 결과를 내기 위한 '통제'가 필요하다.그리고 그 '통제'의 기준은 서비스를 기획하고 개발하는 사람들의 판단이 꼭 필요했다. 들어가며Gak은 치지직 방송의 채팅을 수집해 실시간 분위기를 보여주고, VOD에서 편집할 만한 하이라이트 후보를 찾아주는 서비스입니다.실시간 민심 기능(채팅 감정 분석 대시보드)을 만들기 위해 채팅 감정을 분류했습니다. 감정을 분석하는 마이크로 서비스인 Analyzer에서는 감정을 다음 7개..
·Backend/Spring
공부를 하며 정리한 내용입니다. 틀린 내용이 있다면 알려주세요.감사합니다!🙇TL;DRTomcat이 HTTP 요청을 받아 Thread에 할당하고,Spring MVC의 Front Controller인 DispatcherServlet이 요청을 받은 뒤HandlerMapping과 HandlerAdapter를 이용해 Singleton Controller를 실행하며,Controller는 요청별 상태를 지역 변수로 관리하면서 여러 요청을 동시에 처리한다. Spring MVC를 공부하다 보면 Servlet, DispatcherServlet, Front Controller, HandlerMapping, HandlerAdapter 같은 용어가 한꺼번에 등장한다.용어를 하나씩 외우기만 하면 서로의 관계가 잘 보이지 않는..
·Languages/Java
공부를 하며 정리한 내용입니다. 틀린 내용이 있다면 알려주세요.감사합니다!🙇TL;DRtry-catch: try에서 발생한 예외를 catch에서 처리try-catch-finally: 예외 발생 여부와 관계없이 finally에서 후속 작업을 수행try-with-resources: AutoCloseable을 구현한 자원을 자동으로 닫음(close() 메서드 호출)파일, 소켓, 데이터베이스 연결처럼 종료가 필요한 자원에는 try-with-resources 우선 사용 권장1. try-catch 구문try-catch는 프로그램 실행 중 발생한 예외를 처리해, 해당 예외로 인해 프로그램이 즉시 종료되는 상황을 방지하는 구문입니다.try 블록에는 예외가 발생할 수 있는 코드를 작성하고 catch 블록에는 발생한 예외..
·Languages/Java
자바 변수변수는 데이터를 저장하는 메모리 공간에 붙인 이름이다.int age; // 변수 선언age = 20; // 값 할당int score = 100; // 선언과 동시에 초기화변수 이름은 숫자로 시작할 수 없으며, 자바의 예약어를 사용할 수 없다. 영문자, 숫자, _, $를 사용할 수 있지만 일반적으로 카멜 표기법을 사용한다.int studentAge;double averageScore;지역 변수는 사용하기 전에 반드시 초기화해야 한다.int number;// System.out.println(number); // 컴파일 오류클래스의 필드에는 기본값이 자동으로 들어간다.정수형: 0실수형: 0.0논리형: false참조형: null값을 한 번만 할당하려면 final을 사용..
·Projects
공부를 하며 정리한 내용입니다. 틀린 내용이 있다면 알려주세요.감사합니다!🙇TL;DRLLM처럼 비싼 자원을 이용할 때 어떻게 요청을 효율적으로 보낼 수 있을까 고민하여 해결한 내용AtomicBoolean 기반 상태 플래그를 Semaphore 기반 LLM 호출 슬롯으로 전환Race Condition 가능성을 제거하고 Reactor의 생명주기를 고려한 안전한 permit 반환, skip 이벤트 관측, 향후 병렬 처리 확장성을 확보https://github.com/oneul0/Project-neul/blob/main/docs/design/18_llm_guardrail_plan.md#3-4-semaphore-%EA%B5%90%EC%B2%B4-atomicboolean--semaphore1 문제 (Problem)..
강한남자김스트롱
김스트롱의 스트롱 공부 노트