Dev Log 11 Dev Log/Java & Spring [아키텍처/설계] - MSA 1. MSA란1-1 모놀리식 아키텍처모놀리식 아키텍처(Monolithic Architecture)는 애플리케이션의 모든 기능을 하나의 코드베이스로 만들어 하나의 단위로 빌드하고 배포하는 구조입니다.회원, 주문, 결제 기능이 한 프로젝트 안에 패키지로 나뉘어 있고, 하나의 실행 파일로 배포되며, 보통 하나의 데이터베이스를 함께 씁니다.기능 간 호출은 같은 프로세스 안의 메서드 호출이고, 여러 기능에 걸친 작업도 하나의 DB 트랜잭션으로 처리합니다. 그래서 개발, 테스트, 배포가 단순합니다.대신 서비스와 팀이 커지면 배포, 확장, 장애의 범위가 애플리케이션 전체에 묶인다는 한계가 드러납니다. MSA는 이 한계를 풀기 위한 구조입니다.1-2 정의MSA(Microservice Architecture)는 하나의 .. 2026. 10. 21. 15:39 Dev Log/Java & Spring [네트워크] - REST API 설계 1. REST란1-1 정의REST(Representational State Transfer)는 자원을 URI로 구분하고, 자원의 상태를 표현(representation)으로 주고받는 방식을 정한 아키텍처 스타일입니다.로이 필딩(Roy Fielding)이 2000년 박사 논문에서 웹의 아키텍처 원칙을 정리하며 정의했습니다.프로토콜이나 표준이 아니라, 지켜야 할 제약 조건의 모음입니다(2절).이름의 뜻은 "자원 상태의 표현을 전송한다"입니다. 서버와 클라이언트가 주고받는 것은 자원 자체가 아니라, 자원의 상태를 JSON 같은 형식으로 옮긴 표현입니다.1-2 구성 요소자원(Resource): 다룰 대상입니다. URI로 식별합니다. /api/users/1은 1번 회원입니다.행위(Verb): 자원에 할 일입니다... 2026. 10. 21. 15:09 Dev Log/Java & Spring [ORM/JPA] - N+1 문제 정의연관관계가 있는 엔티티를 조회할 때, 목록을 가져오는 쿼리 1번 외에 조회된 행 수(N)만큼 연관 엔티티 조회 쿼리가 추가로 나가는 문제.예시Team(1) : Member(N) 관계에서 팀이 10개 있다고 하자.@Entitypublic class Team { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "team", fetch = FetchType.LAZY) private List members = new ArrayList();}@Entitypublic class Member { @Id @GeneratedValue private Long id; @ManyToOne(fetch = FetchType.LAZY.. 2026. 10. 5. 23:17 Dev Log/Java & Spring [운영체제] CPU 스케줄링 정의준비 큐(Ready Queue)에 있는 프로세스 중 누구에게, 언제, 얼마 동안 CPU를 줄지 운영체제가 결정하는 것.왜 필요한가프로세스의 실행은 CPU 버스트(CPU를 쓰는 구간)와 I/O 버스트(입출력을 기다리는 구간)의 반복이다. 한 프로세스가 I/O를 기다리는 동안 CPU를 놀리면 낭비이므로, 그 사이에 다른 프로세스를 실행시켜 CPU를 최대한 활용한다(멀티프로그래밍).CPU 바운드 프로세스: CPU 버스트가 길다. 연산 위주(인코딩, 계산).I/O 바운드 프로세스: CPU 버스트가 짧고 I/O가 잦다. 사용자와 상호작용하는 프로그램.스케줄링이 일어나는 시점상태 전이예시구분실행 → 대기I/O 요청비선점실행 → 종료프로세스 종료비선점실행 → 준비타이머 인터럽트(할당 시간 만료)선점대기 → 준비I.. 2026. 10. 5. 14:20 Dev Log/Algorithm [프로그래머스] 코딩 기초 트레이닝 - Day 4 코딩테스트 기초 - Day 4 : 연산, 조건문문제 1. n의 배수문제: 정수 num과 n이 주어질 때, num이 n의 배수이면 1을, 아니면 0을 return한다.입력: 98 2출력: 1입력: 34 3출력: 0정답:획득: 나머지 연산자 %의 결과가 0인지로 배수 여부를 판별하는 방법, 삼항 연산자로 두 값 중 하나를 반환하기문제 2. 공배수문제: 정수 number와 n, m이 주어질 때, number가 n의 배수이면서 m의 배수이면 1을, 아니면 0을 return한다.입력: 60 2 3출력: 1입력: 55 10 5출력: 0정답:획득: 두 조건을 모두 만족해야 할 때 논리 AND 연산자 &&로 조건을 묶는 방법문제 3. 홀짝에 따라 다른 값 반환하기문제: 양의 정수 n이 주어질 때, n이 홀수면 n 이하.. 2026. 10. 5. 00:57 Dev Log/Java & Spring [Spring 프레임워크] - IoC/DI, Bean 생명주기 1. 프레임워크와 라이브러리1-1 프레임워크는 왜 쓰는가프레임워크는 구조가 이미 짜여 있고, 개발자는 그 구조 안에 코드를 추가하는 방식으로 개발합니다. 그래서 일정한 품질이 보장된 결과물을 얻을 수 있습니다.1-2 라이브러리 vs 프레임워크구분라이브러리프레임워크주도권개발자프레임워크호출 방향내 코드 → 라이브러리프레임워크 → 내 코드설명특정 기능을 제공하도록 미리 만들어 둔 클래스/메서드의 모음. 개발자가 필요한 시점에 직접 가져와 호출하고, 전체 흐름은 개발자 코드가 결정애플리케이션의 구조와 실행 흐름을 미리 정해 둔 틀. 개발자는 정해진 규칙에 맞춰 코드를 작성하고, 그 코드를 언제 호출할지는 프레임워크가 결정예시Jackson, Apache CommonsSpring, JUnit// 라이브러리: 내가 .. 2026. 9. 23. 22:29 Dev Log/Algorithm [프로그래머스] 코딩 기초 트레이닝 - Day 3 문제 1. 문자열 섞기문제: 길이가 같은 두 문자열 str1과 str2가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.1 ≤ str1의 길이 = str2의 길이 ≤ 10str1과 str2는 알파벳 소문자로 이루어진 문자열입력: solution("aaaaa", "bbbbb")출력: "ababababab"정답:class Solution { public String solution(String str1, String str2) { StringBuilder result = new StringBuilder(); for(int i = 0; i 획득: 처음엔 char[] 배열을 .. 2026. 9. 20. 17:28 Dev Log/Algorithm [프로그래머스] 코딩 기초 트레이닝 - Day 2 코딩테스트 기초 - Day 2 : 출력, 연산, 문자열 조작문제 1. 덧셈식 출력하기문제: 두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.입력: 4 5출력: 4 + 5 = 9정답:import java.util.Scanner;public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(a + " + " + b + " = " + (a + b)); }}획득: 딱히 획득할만한게 .. 2026. 9. 15. 16:36 Prev 12 Next