Backend (29) 썸네일형 리스트형 동기 vs 비동기, 그리고 코루틴에 대해 1. 동기(Synchronous) 처리의 개념동기 방식은 요청이 들어오면 한 스레드가 하나의 요청만 담당하는 구조다.이 요청이 끝날 때까지 스레드는 다른 작업을 하지 못한다. (블로킹)예를 들어 /register 요청이 DB를 기다리는 동안, 그 스레드는 단순히 멈춰 있는 상태다.스레드풀이 모두 사용 중이면 새 요청은 대기 상태로 들어간다.2. 비동기(Asynchronous) 처리의 개념비동기는 I/O가 발생할 때 스레드를 점유하지 않고 다른 요청을 처리한다.즉, 기다리긴 하지만 스레드를 붙잡아두지 않는다.스레드는 요청을 잠시 멈춘(suspend) 코루틴 대신 다른 요청을 처리할 수 있다.결과적으로 적은 스레드로 수천 개의 요청을 동시에 처리할 수 있다.코루틴의 기본 원리suspend fun이 호출되면 .. 동시성 문제 해결 (Kotlin, Spring Boot) 안녕하세요!오늘은 정말 중요한 동시성 문제 해결 방식을 이야기해보려고 합니다.최근 이 부분에 대해서 관심이 생기면서 한번 정리하면 좋을까 했습니다.예를들면 네이버 쇼핑, 인터파크 같은 수많은 사용자가 동시에 몰려드는 서비스에서는 단순히 락만 걸어서는 한계가 있어요.그래서 어떤 구조를 쓰면 좋을지, 그리고 실제로 Kotlin + Spring Boot 예제 코드로 어떻게 구현할 수 있는지도 같이 알아볼게요.왜 동시성 문제가 발생할까?주문/예약 시스템에서는 재고(상품/좌석/티켓)가 제한적이죠.예를 들어 100개의 좌석을 동시에 1,000명이 예약하려고 하면, 재고는 순식간에 소진될 거예요.만약 여러 요청이 동시에 재고를 확인하고 감소시키면, 아래처럼 꼬일 수 있어요.1️⃣ 스레드 A: 재고 읽음 → 12️⃣ .. Preflight란? (CORS) 1. 정의Preflight(프리플라이트) 요청은브라우저가 “실제 요청 전에” 서버에 OPTIONS 메서드로 사전 질의하는 과정입니다.목적은:“내가 앞으로 이 API에 특수 헤더/메서드/쿠키 등을 붙여서 요청해도서버가 허락해주는지 먼저 확인하겠다”는 것.2. 언제 Preflight가 발생하는가?브라우저가 CORS 규칙 위반 요청을 하려 할 때(예: 커스텀 헤더, 인증 필요, JSON POST 등)예시:Authorization, X-CUSTOM-TOKEN 같은 커스텀 헤더 포함Content-Type이 application/json 등 표준이 아닐 때메서드가 GET/POST/HEAD가 아닌 경우 (PUT, PATCH, DELETE 등)3. Preflight의 실제 동작 순서브라우저가 서버로 OPTIONS 요청.. 구글 유튜브 API (YouTube Data API) 활용 구글에서 제공하는 유튜브 API를 활용해서 홈페이지에서 사용 가능한 데이터를 만들어봤습니다.예를 들면 매일 하루마다 업데이트되는 데이터로 홈페이지 메인에 썸네일 및 링크를 보여주도록 합니다. 그러면 아래와 같이 진행을 해볼까요? 1. API 키 발급 및 채널 ID공식 레퍼런스 YouTube Data API 개요 | Google for Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. YouTube Data API 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 소개 이 문서는 YouTube와 상호작용하developers.google.com API 키 발급받는 내용에 대해 좋은 포스팅이 있어서 공유합니다. YouTube Da.. JetBrains IDE에서 GitHub Copilot 사용하기 1단계: JetBrains IDE 설치하기- IntelliJ IDEA, RubyMine, WebStorm ..2단계: GitHub Copilot 무료 활성화- github 로그인 후 settings > copilot 진입- 무료버전은 한 달에 최대 2,000개의 코드 완성과 50개의 채팅 메시지로 제한됩니다. 3단계: IDE 플러그인 설치 (Github Copilot) 4단계: GitHub 계정 연동 에디터내의 우측에 코파일럿 챗 메뉴를 클릭하니 로그인하라는 내용이 나옵니다 나의 경우 2번의 인증을 진행하니 아래와 같이 챗이 활성화되었다. Kotlin 백엔드 개발자를 위한 Java 개념 정리 코틀린으로 개발을 하면서 자바에 대한 개념을 어느정도 알아야할까 궁금하게되면서 정리를 해봤습니다. 1. Java 문법 기본✅ 객체 지향 개념📌 클래스(Class)와 객체(Object)클래스(Class): 객체를 생성하기 위한 설계도 또는 틀. 객체가 가져야 할 속성(변수)과 동작(메서드)을 정의함.객체(Object): 클래스에 정의된 내용을 바탕으로 메모리에 할당된 실체.class Car { String brand; int speed; void drive() { System.out.println("Driving " + brand + " at " + speed + " km/h"); }}public class Main { public static void m.. M1 MacOS Ruby & Rails 셋팅 (ruby build failed error, rbenv) 저도 셋팅하면서 고생했었는데 다른분들에게 도움이되면 좋겠습니다.아래에 해당되는 분들은 도움이 될거에요.1. 과거 M1 맥북이 출시되면서 로제타를 활용해서 루비 프로젝트를 시작했던 사람2. brew를 x86 버전으로 설치해서 사용했던 사람3. 루비 2.X 버전에서 3.X 버전으로 마이그레이션을 진행하는 사람4. RubyMine을 사용하는 SDK를 조회 못한다면? (Run Configuration Error: No SDK specified)최근 레거시한 프로젝트의 ruby version 마이그레이션 작업을 진행했습니다.2.5.1 버전을 사용했는데... 전에 작업하신분의 도움으로 어떻게 셋팅은 했었습니다.하지만 결국 버전을 올리는 작업은 필요하다 느끼고 몇몇 라이브러리 안되는 부분들을 맞추면서 프로젝트의 마이.. gradle error - NoClassDefFoundError (org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel) Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel 최근 기존에 잘되고 있는 프로젝트를 다시 클론 받아서 build 해보려는데 오류가 발생했다. 검색을 해보니 코틀린의 경우 JDK 16버전 이상인 경우 오류가 발생하는 문서가 있었고.. 링크 JDK 16 - e: java.lang.NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel When running a kotlin compilation with JDK 16 (targeting language level 8), I se.. 이전 1 2 3 4 다음