분류 전체보기 133

데이터 독립성

데이터 독립성 데이터 독립성이란 무엇일까요? 논리적 독립성과 물리적 독립성에 대해서 설명해 보세요 데이터 독립성의 필요성에 대해서 설명해 보세요 데이터 독립성 하위 단계의 데이터의 논리적, 물리적 구조가 변경되어도 상위 단계에 영향을 미치지 않도록 구성하는 데이터베이스 특징 필요성 유지보수 비용 증가 테이터 복잡도 증가 데이터 중복성 증가 요구사항 대응 저하 독립성 내용 목적 논리적 독립성 ▪️ 데이터베이스의 논리적 구조를 변경시키더라도 기존 응용 프로그램에 영향을 주지 않는 것(응용 프로그램과 자료구조를 독립시키는 것) ▪️ 데이터베이스 관리시스템이 하나의 논리적데이터 구조를 가지고 많은 응용 프로그램이 제 각각 요구하는 다양한 형태의 논리적 구조로 사상(Mapping)시켜 줄 수 있어야 함 ▪ 사용자..

액츄에이터

운영 환경에서 서비스할 때 필요한 이런 기능들을 프로덕션 준비 기능이라 함 프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적 요소들을 뜻함 지표(metric), 추적(trace), 감사(auditing) 모니터링 스프링 부트가 제공하는 액추에이터는 이런 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는 다양한 평의 기능들을 제공함 액츄에이터는 /actuarot 경로를 통해 기능을 제공함 이 기능은 현재 서버가 잘 동작하고 있는지 애플리케이션의 헬스 상태를 나타냄 액츄에이터 기능을 웹에 노출 액츄에이터가 제공하는 수 많은 기능을 확인 할 수 있음 제공하는 기능을 엔드포인트라 함 health 는 헬스 정보, beans는 스프링 컨테이너에 등록된 빈을 보여줌 각각의 엔드포인트는 /actuator/{엔드포..

YAML / @Profile

YAML YAML (YAML Ain't Markup Language) 사람이 읽기 좋은 데이터 구조를 목표로 함 확장자는 yaml, yml application.properties 예시 environments.dev.url=https://dev.example.com environments.dev.name=Developer Setup environments.prod.url=https://another.example.com environments.prod.name=My Cool App application.yml 예시 environments: dev: url: "https://dev.example.com" name: "Developer Setup" prod: url: "https://another.examp..

운영체제의 큰 그림

운영체제의 큰 그림 운영체제의 심장, 커널 커널: 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 사용자 인터페이스: 커널에 포함되지 않는 서비스, 사용자가 컴퓨터와 상호작용할 수 있는 통로 그래픽 유저 인터페이스: 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스 커맨드 라인 인터페이스: 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스 이중 모드와 시스템 호출 응용 프로그램이 실행 과정에서 하드 디스크에 접근하여 데이터를 저장하려면 운영체제에 도움을 요청해야 하고, 운영체제는 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드를 실행하여 응용 프로그램의 작업을 대신 수행함 이중 모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구..

운영체제를 알아야 하는 이유

운영체제를 알아야 하는 이유 운영체제란 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 도움 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리하는 역할 응용 프로그램에 자원을 효율적으로 배분하고, 실행할 프로그램들이 지켜야 할 규칙을 만들어 컴퓨터 시스템 전체를 관리

다양한 입출력 방법

다양한 입출력 방법 프로그램 입출력 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법 CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만나면 CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행함 1. '메모리에 저장된 정보를 하드 디스크에 백업한다' 말은 '하드 디스크에 새로운정보를 쓴다'는 말과 같음 CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령을 보냄 2. 하드 디스크 컨트롤러는 하드 디스크 상태를 확인 하드 디스크가 준비된 상태라면 하드 디스크 컨트롤러는 상태 레지스터에 준비되었다고 표시함 3. ① CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부를 확인함 ② 하드 디스크가 준비됐음을 CPU가 알게 되면 백업할 메모리..

장치 컨트롤러와 장치 드라이버

장치 컨트롤러와 장치 드라이버 장치 컨트롤러 CPU, 메모리보다 다루기가 더까다로움 입출력장치에는 종류가 너무 많음 키보드, 모니터, USB 메모리, SSD, 마우스 등 많음 장치마다 속도, 데이터 전송 형식 등도 다양하기 때문에 입출력장치와 정보를 주고받는 방식을 규격화하기 어려움 입출력장치의 데이터 전송률은 낮음 전송률: 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표 CPU나 메모리와 전송률이 비슷하지 않기 때문에 통신이 어려움 모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받고, 장치 컨트롤러는 하나의 이상의 입출력장치와 연결되어 있음 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신 중개 오류 검출 데이터 버퍼링 버퍼링: 전송률이 높은 장치와 낮은 장치 사이에 ..

@ConfigurationProperties 검증

@ConfigurationProperties 검증 최대 커넥션 숫자는 최소 1 최대 999라는 범위를 가져야 한다면 검증을 어떻게 할 수 있을까? 자바에는 자바 빈 검증기 (java bean validation) 이라는 표준 검증기가 제공됨 자바 빈 검증기를 사용하려면 spring-boot-starter-validation 이 필요함 @NotEmpty 어노테이션: 항상 값이 있어야 함 @Min(1) @Max(999) 어노테이션: 최소 1, 최대 999의 값을 허용 @DurationMin(seconds = 1) @DurationMin(seconds = 60) 어노테이션: 최소 1, 최대 60초를 허용 MyDataSourceConfigV3 생성 및 ExternalReadApplication.java 수정 m..

RAID의 정의와 종류

RAID의 정의와 종류 RAID 하드 디스크와 SSD를 사용하느 기술로, 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술을 의미함 RAID 종류 RAID 0 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식 데이터를 저장할 때 각 하드 디스크는 아래와 같이 번갈아 가며 데이터를 저장함 스트라입: 줄무늬처럼 분산되어 저장된 데이터 스트라이핑: 분산하여 저장 장점: 저장된 데이터를 읽고 쓰는 속도가 빠름 단점: 저장된 정보가 안전하지 않음, 디스크 중 하나에 문제가 생긴다면 다른 모든 하드 디스크의 정보를 읽는 데 문제가 생길 수 있음 RAID 1 복사본을 만드는 방식, 거울처럼 완전한 복사본을 만드는 구성이기에 미러..

다양한 보조기억장치

다양한 보조기억장치 하드 디스크 (자기 디스크) 자기적인 방식으로 데이터를 저장하는보조기억장치 하드 디스크는 CD나 LP와 비슷하게 동작함, 동그란 원판에 데이터를 저장하고, 그것을 회전시켜 뾰족한 리더기로 데이터를 읽는 점에서 비슷함 플래터: 하드 디스크에서 실질적으로 데이터가 저장되는 곳, 자기 물질로 덮여 있어 수많은 N (0)극와 S (1)극을 저장함 스핀들: 플래터를 회전시키는 구성 요소 RPM: 스필들이 플래터를 돌리는 속도 (분당 회전수) 헤드: 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소, 바늘 같이 생긴 부품 디스크 암: 원하는 위치로 헤드를 이동시킴 디스크는 훨씬 더 많은 양의 데이터를 저장해야 하므로 일반적으로 여러 겹의 플래터로 이루어져 있고 플래터 양면을 모두 사용할 수 있음,..