분류 전체보기 81

[MSA] 멀티 모듈과 MSA

멀티 모듈 vs MSA모듈이란프로그램을 구성하는 시스템을 기능 단위로, 독립적인 부분으로 분리한 것.하나 이상의 논리적인 기능을 수행하기 위한 명령어들의 집합.모듈 자체로 재사용될 수 있고, 독립적으로 컴파일이 가능해야 한다.모듈화란기능적인 분리를 통해 다른 프로그램을 개발 할 때 유지보수와 코드 재사용성을 높여 소프트웨어를 설계하는 기법 멀티 모듈 / MSA 구조 이해하기1. 모놀리식 아키텍처1) 단일 모듈 멀티 프로젝트일반적으로 익숙한 하나의 서비스에서 api, admin, batch, web, db 등이 관리되는 구조로, 여러개의 서비스 프로젝트가 레이어드 아키텍처 구조를 갖고dallaecodding.tistory.com모놀리식 아키텍쳐 1. 단일 모듈 멀티 프로젝트api, batch, web, d..

Cloud 2025.05.30

[Next.js] CSR, SSR, SSG, ISR

1. CSR (Client Side Rendering)HTML, CSS, JS 파일을 브라우저가 받아서, 브라우저에서 JavaScript가 실행되며 화면을 구성함.특징:초기 로딩이 느림 (JS 다운로드 → 실행 → 렌더링까지 시간 소요)첫 화면은 같은 빈 HTML만 존재이후 페이지 전환은 빠름 (SPA 구조: 새로고침을 하지 않고, 화면만 교체해주는 방식) 장점:사용자 경험(UX) 향상 (페이지 전환이 빠름)프론트엔드 개발에 유연.2. SSR (Server Side Rendering)설명: 사용자의 요청이 들어오면, 서버에서 HTML을 완성해서 보내줌.대표 프레임워크: Next.js, Nuxt.js, Ruby on Rails 등특징:초기 로딩 빠름 (브라우저가 HTML 그대로 받아서 바로 렌더링)크롤러..

Front/React 2025.05.21

[CS] IP 와 DNS

✏️개념 정리IP- 인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위해 지켜야 하는 규약- 고정 ip : 일정된 주소를 사용- 유동 ip : 남아있는 ip 중에서 부여되는 ipDNS도메인의 이름과 ip 주소를 변환하는 역할- 도메인 앞 www 을 뺀 뒷 부분. - 전화번호부처럼, 이름(도메인)을 검색하면 번호(ip 주소)를 알려줌. 1. 웹 브라우저에서 URL 을 검삭하면 2. 웹 브라우저가 입력한 URL 을 분석하여 일을 하기 시작함. - Scheme://:@:/?#- ex ) https://naver.com- https 프로토콜을 사용해 naver.com이라는 도메인에 접근한다. 3. URL 구조가 맞으면, DNS Server 에 내가 접근하려는 도메인의 ip 주소를 요청한다.- DNS 에 요..

Network 2025.05.21

[Oracle] 테이블스페이스

✏️ 테이블스페이스 와 데이터베이스 의 차이점데이터베이스 - 데이터를 저장하고 관리하는 전체 시스템 단위. - 구성 요소 : 하나 이상의 테이블 스페이스로 구성. 데이터 파일, 로그 , 유저 등 - 전체 데이터 관리 및 운영 테이블 스페이스 - data file 이라는 물리적 파일 형태가 하나 이상 모여 있는 논리적 저장 구조.- 데이터 베이스의 구성 요소 중 하나. 데이터 저장 단위 중 가장 상위에 있음. :: 데이터 블록 > 익스텐트 > 세그먼트 > 테이블 스페이스. :: 데이터 블록 여러개가 모여 익스텐트 하나 구성, 익스텐트 여러개가 모여 하나의 세그먼트 구성. - 데이터 객체 저장 위치 및 논리적 분리 및 관리. ✏️ PDB 에서 테이블 스페이스 생성하기CDB는 전체 데이터 베이스의 공통..

DB 2025.05.03

[Oracle] CDB, PDB

오라클 12c 이후부터 멀티 테넌트라는 개념이 만들어졌다. Multi - tenant : 여러 세입자>> 여러 세입자 (DB) 가 모여 산다 !! CDB : Container DB- container database. 여러 개의 DB 를 담을 수 있는 컨테이너.- 하나의 CDB 는 여러개의 PDB 라는 독립된 데이터베이스를 담을 수 있는 기능을 제공함. CDB$SEED- 데이터 베이스는 아니지만, PDB 서버를 만들기 위한 템플릿. - PDB 서버를 만들 때 seed 에 있는 설정을 기반으로 생성됨. PDB : Pluggable DB- PDB는 서로 독자적인 스키마, 스키마 오브젝트, 유저와 같은 집합을 가짐. - CDPB 서버의 자원을 공유하면서 독립적이고 가상회 된 데이터베이스. - XEPDB 는..

DB 2025.05.03

[Java] 자바 메모리 구조

자바 프로그램이 실행되면 JVM (자바 가상 머신)이 메모리를 할당 받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리함.그 메모리 공간을 크게 메서드영역, 스택 영역, 힙 영역으로 구분한다. 메서드 영역 프로그램을 실행하는데 필요한 공통 데이터.- 클래스 정보 : 클래스의 실행 코드, 필드, 매서드와 생성자 코드. - static 영역 : static 변수 보관- 런타임 상수 풀 : 프로그램을 실행하는 데 필요한 공통 리터럴 상수 보관. 스택 영역자바 실행 시 하나의 실행 스택이 생성됨. - 스택 프레임 : 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함함.- 메서드를 호출할 때마다 하나의 스택 프레임이 쌓임. - 각 스레드 별로 하나의 실행 스택이 생성됨. 스레드 수 만큼 스택이..

Language/Java 2025.05.01

[Java] 컨텍스트 스위칭

컨텍스트 : 현재 작업하는 문맥멀티태스킹을 할 때 각 스레드를 멈추는 시점에 실행하던 값을 메모리에 저장해 두어야 함. 이전에 실행 중인 값을 메모리에 잠깐 저장하고, 이후 다시 실행하는 시점에 저장한 값을 불러와야 한다. >> 컨텍스트 스위칭은 빈번할수록 좋지 않음. 컨텍스트 스위칭 비용은 매우 큼. >> 하지만! 어떤 작업이느냐에 따라 다름. 스레드가 하는 작업: CPU 바운드 작업 vs I/O 바운드 작업- CPU 바운드 작업 : 연산 능력을 많이 요구하는 작업. - I/O 바운드 작업: 입출력 작업을 많이 요구하는 작업. 디스크, 네트워크, 파일 시스템과 같은 입출력 작업. - 실무에서는 I/O 바운드 작업이 많다. CPU 를 많이 사용하지 않음. 스레드의 숫자는 스레드 작업에 따라 다르게 ..

Language/Java 2025.04.22

[Java] 멀티스레드, 멀티태스킹, 스레드

- 프로그램 실행 : 코드를 순서대로 cpu 에서 연산하는 일. - cpu 코어가 하나가 있어도, 동시에 프로그램이 실행 수 있도록 하는 방법은 ? - cpu 코어 : 실제 연산을 처리할 수 있는 것. 하나의 cpu 안에 여러 개의 코어가 들어 있음. 멀티 태스킹- cpu가 매우 빠르게 두 프로그램의 코드를 번갈아 수행 하면 동시에 실행하는 것처럼 느껴질 수 있음.- 단일 cpu가 여러 작업을 동시에 수행하는 것 처럼 보이게 하는 것. >> 시분할 기법. 운영체제 소프트웨어의 관점 스케쥴링 - 어떤 프로그램이 얼마만큼 실행할지 결정하는 것. - cpu 를 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용. 멀티 프로세싱 - 프로세서가 여러 개. cpu 코어가 두개 이상이라면 ? - 물리적으로 동..

Language/Java 2025.04.20

[Spring] 예외처리 - throw, throws

throw : 예외를 발생시키는것. 예외 객체를 생성해서 즉시 던진다. throws :자신을 호출한 상위 메서드로 에러를 던짐. 오류를 처리하지않고 디바이드 메서드를 호출한 쪽에게 오류를 처리하라고 떠넘길 수 있음. catch 블록에서 매칭 : 더 구체적인 타입을 먼저 매칭 NullPointerException : RuntimeException의 하위 클래스.RuntimeException : Exception의 하위 클래스.>> NullPointerException을 먼저 잡음. public static void main(String[] args) { int sum = 0; try { func(); } catch (NullPointerException e) { ..

Spring/예외처리 2025.04.10

트리 구조 DTO

https://dojjong.tistory.com/10 부모-자식관계 트리구조 만들기부서를 구현하고 싶을때, 3단계 까지 들어가는 부서가 있다고 치면 예를 들어 ○○실-□□부-△△팀 의 형식이라 해당하는 부서를 컬럼으로 따로 구분했었습니다. 기존에 이미 서비스중인 시스dojjong.tistory.com 데이터는 플랫하게 가져와서  converter내에서 처리Map dtoMap = new HashMap();List roots = new ArrayList();for (Category c : categories) { dtoMap.put(c.getId(), new CategoryTreeDto(c.getId(), c.getName()));}for (Category c : categories) { Cat..