AWS Burstable 인스턴스 성능 이슈
·
클라우드 엔지니어/장애 처리
1. 모니터링으로 이슈 발견스테이징 환경의 Rabbit MQ 서버가 오후 12시 이후, CPU 사용률 100%를 반복하고 있음해당 서버는 AWS 환경에서 VM으로 구성되어 있음 2. 백엔드 팀에 이슈 전달해당 시간에 다건 MQ 발생 건 없음Rabbit MQ 브로커에도 보류된 MQ 건 없음 3. 서버에서 실시간 CPU 사용 현황 파악 Steal Time이 높은 것을 확인 (호스트 머신이 다른 VM에게 CPU를 할당하느라 현재 VM이 사용하지 못한 시간) 4. 호스트 서버를 관리하는 AWS에 문의 ● 원인 발견해당 서버의 인스턴스 유형이 Burstable 형태로 평소 기본 수준의 CPU 성능을 유지하다 성능 확장이 필요한 순간 credit을 사용하여 CPU 사용률을 높이는 형태이다. 해당 이슈가 ..
표준화된 Framework의 단점
·
개발 지식/Trouble Shooting
◾ 문제사항이 애플리케이션의 사용자 인증, 권한 부여 기능은 Spring Security 프레임워크의 Form Login 방식을 통해 간편하게 구현되어 있었다.그리고 로그인 폼을 디자인할 때에는 사용자 입력 항목이 적기 때문에 Modal을 이용해 구현하고 싶었다.하지만!Spring Security에서 제공하는 로그인 방식은 오직 URL을 연결 시켜주어야 했다.즉, Modal을 바로 띄울 수 없고 html 페이지로 만들어야 한다는 것이다.   이 점에서 프레임워크의 표준화된 구조가 애플리케이션의 유연성을 제한한다는 것을 깨달았고, 큰 단점으로 다가왔다. 창의적인 방법이 없을까 고민하며 굉장히 많은 자료들을 찾아보았지만, 대부분 html 페이지 자체를 로그인 화면으로 구성하고 있었다.  ◾ 해결 방안결국 나..
JavaScript에서 데이터 전달하는 4가지 방법
·
개발 지식/Trouble Shooting
∎  요구 사항쇼핑몰 사이트 개발 중Front-End에서 상품 데이터를 장바구니 페이지 -> 주문 페이지로 이동 시켜야 했다.    ∎  해결 방법 조사서로 다른 페이지 간의 데이터 전송 방법을 효율적으로 하고 싶어 다양한 방법을 찾아보았다.2개의 Html 파일 각각에 2개의 JS 파일 모두 연결ES6 모듈을 사용하여 import, export로 원하는 데이터 공유Webpack으로 JS 파일 번들링 후, 데이터를 import, export하여 공유Web Storage에 데이터 저장 ⦁  1번은 제일 간단하지만, 파일 간의 변수 이름이 충돌이 날 수가 있어서 지양하는 방법이었다. ⦁  2번 방법인 ES6 모듈을 사용해보았다. 간단하게 script의 type만 변경해주면 import, export 구문을 사..
Spring Security FilterChain 활용법
·
개발 지식/Trouble Shooting
▪ 배경토큰 인증은 클라이언트가 서버로 토큰을 전송하면, 서버가 이 토큰의 유효성을 확인한다.유효성을 통과하지 못하는 이유는 여러가지가 있다.토큰의 기한이 만료되었을 때토큰이 조작되었을 때지원하지 않는 유형의 토큰일 때이후, 동작 흐름은 AuthenticationEntryPoint 구현체를 호출하고 같은 예외 메시지를 전송하게 된다. 하지만토큰 기한이 만료된 경우에는 클라이언트가 토큰 재발급을 요청할 수 있도록, 서버에서 메시지를 구분해주어야 한다.  ▪  해결 방안기존의 필터 체인은 기본적인 인증과 권한 부여 기능을 제공하지만, 특정 예외 상황을 처리하기에는 유연성이 부족하다는 것을 깨달았다.그래서 필터 체인을 세밀하게 제어할 필요성을 느꼈고, Spring Security 프레임워크에서 FilterCh..
인터럽트 - CPU 비동기 처리 원리
·
CS 지식/운영체제
우리는 입출력 장치를 통해 컴퓨터를 사용하고, 이 처리들은 CPU를 통해 이루어진다.CPU 자원은 한정되어 있는데 이 CPU가 수많은 작업들을 빠르게 처리하려면 어떻게 해야할까?이에 대한 답을 찾기위해 우리가 CPU를 사용하는 과정을 알아보고,어떻게 CPU를 효율적으로 사용할 수 있는지 공부해보자.    ∎  입력이 CPU에 닿는 법⦁ 우리가 사용하는 입출력 장치는 장치 컨트롤러를 통해 CPU, 공유 메모리와 연결된다.(장치 컨트롤러는 하드웨어 통로이다.)⦁ 하드웨어인 장치 컨트롤러를 응용 프로그램에서 사용하기 위해서는 이를 제어하는 소프트웨어가 필요하고, 이를 장치 드라이버라고 한다. ⦁ 예를 들어 사용자가 응용 프로그램에서 입력 장치를 통해 데이터를 입력하면, 입력 장치 드라이버는 입력 장치 컨트롤러..
프로세스와 스레드 비교 - 적절한 사용 예시
·
CS 지식/운영체제
∎  프로세스와 스레드 정의⦁  프로세스는 운영체제로부터 자원을 할당받은 작업의 단위(메모리를 할당받아 올라간 후, CPU 자원을 할당받는다) ⦁  스레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위  ∎  메모리 구조 ⦁  프로세스 한개 당 메모리 할당 : 코드 영역(기계어), 데이터 영역(전역 변수), 스택 영역, 힙 영역(동적 할당)  ⦁  스레드는 스택 영역을 복사해 각자 가지고 있고, 나머지는 공유한다.  ∎  프로세스  문맥 교환 과정멀티 프로세스의 자원 공유는 CPU 레지스터 교체 뿐 아니라, RAM과 CPU 사이의 캐시 메모리까지 초기화되서 자원 부담이 크다. 스케줄링 알고리즘에 따라 실행순서가 빠른 프로세스 먼저 실행하고, 만약 I/O처럼 외부 이벤트가 일어날 경우, 대기에 들..
컴퓨터 자원 - 프로세서, 메모리
·
CS 지식/운영체제
운영체제는 컴퓨터의 자원을 적절하게 사용하여 우리가 원하는 작업을 하기 위해 필수적으로 공부해야 하는 지식이다.컴퓨터의 자원에 대해 잘 알고 있어야 제어를 할 수 있기 때문에 이번 시간에는 컴퓨터의 구조에 대해서 배워보자.  ∎  컴퓨터 제어권의 흐름 맨 처음 컴퓨터를 켜면, ROM 칩에 있던 BIOS가 메모리에 적재됩니다.그리고, BIOS는 비휘발성 저장장치(ROM)에 들어있는 부트스트랩 프로그램에게 제어권을 넘깁니다. 부트스트랩 프로그램은 RAM을 사용할 수 있게 초기화한 후,운영체제 커널을 RAM에 올려서 사용가능하게 만듭니다. 그리고 제어권을 운영체제 커널에게 넘겨줍니다.  ∎  휘발성 / 비휘발성 메모리의 필요성CPU는 메모리에 저장된 프로그램을 자신의 레지스터로 적재한 후, 작업을 실행합니다...
데드락 (DeadLock, 교착 상태)과 예방법
·
CS 지식/운영체제
∎  교착 상태란?구조가 자원이 나올 수 없게 되어있어서, 무한히 대기만 해야하는 상태∎ 다음 4가지가 "모두" 해당되면 교착 상태가 발생!상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때점유와 대기 : 자원을 점유하고 있는 상태로 다른 자원을 할당받기 기다리고 있을 때비선점 : 다른 프로세스의 자원을 강제로 뺏을 수 없을 때원형 대기 : 프로세스들이 원의 형태로 자원을 대기한다∎ 교착 상태 예방법위의 4가지 상황들 중 하나를 없앤다! ⦁  상호 배제 없애기 : 모든 자원을 공유시키는 것은 위험하다. ⦁  점유와 대기 없애기 : 하나의 프로세스에 자원을 모두 할당하거나, 모든 프로세스에 자원을 모두 안주는 방식                                    ..
공유 자원 동기화
·
CS 지식/운영체제
프로세스들은 자원을 공유하기 때문에 동기화가 필요하다. ∎  순서를 맞추기 위한 동기화ex) 파일을 읽기 전에 쓰기가 먼저 이루어져야 한다.  ∎  동시 접근을 막는 동기화ex) 계좌에 돈을 입금, 출금할 때 잔액을 동기화 시켜야한다.전역 변수, 파일, 입출력장치, 보조기억장치, ... 등과 같은 공유자원에 동시 접근 막기임계 구역을 두어 접근을 관리한다.동시 접근으로 자원의 일관성이 깨지는 것을 Race Condition(레이스 컨디션)이라고 부른다.∎  레이스 컨디션 막는 원칙 (기술 면접)1. 상호 배제 : 임계 구역에 진행중인 프로세스가 있다면 다른 프로세스의 접근을 막아야 한다. 2. 진행 : 임계 구역에 아무도 없다면 접근할 수 있어야 한다.3. 유한 대기 : 언젠가는 접근할 수 있어야 한다...
메모리 - 커널 영역, 사용자 영역
·
CS 지식/운영체제
⦁  컴퓨터 자원 :  CPU, 메모리, 입출력 장치 ∎ 메모리의 "커널 영역"⦁ 운영체제란?실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램메모리의 커널 영역에 적재되어 있다.현존 하는 프로그램 중 크기가 가장 크다. ⦁ 메모리에서 응용 프로그램응용 프로그램은 보조 기억 장치에 있는 데이터이고, 사용 중일 때 메모리에 적재되고, 사용을 종료했을 때 메모리에서 삭제된다.(프린터 같은 입출력 장치도 마찬가지다)  ⦁ 운영체제 영역 나누기운영체제는 커널인 부분 + 커널이 아닌 부분으로 나눌 수 있는데, 커널은 핵심 서비스를 담당한다.커널이 아닌 부분은 UI(User Interface)가 있다.  ⦁ 응용 프로그램이 CPU 사용법CPU가 커널 모드이면 사용 가능하고..
CPU 스케줄링 알고리즘
·
CS 지식/운영체제
프로세스들에게 자원을 분배하는 방식인 CPU 스케줄링 ∎  스케줄링  특징공정하고 합리적으로 CPU 자원을 배분하는 것은 컴퓨터 성능과 직결된다.우선순위에 따라 순서를 정해야 한다.PCB를 기반으로 결정한다.PCB를 일일이 열어보는 것은 비효율적이기 때문에, 프로세스들을 스케줄링 큐에 넣는다.( * 큐를 이용하지만 선입선출 방식은 아니다.)큐에는 준비 큐와 대기 큐가 있다.준비큐 : CPU 사용 원할 때 줄서는 곳대기큐 : 입출력장치 이용 원할 때 줄서는 곳  스케줄링은 인터럽트가 가능한 선점형 스케줄링과 독점되어 인터럽트가 불가능한 비선점형 스케줄링이 있다.(선점형은 오버헤드 발생 가능)  ∎  스케줄링 알고리즘(아이디어를 공부하자) ✔ 선입 선처리 스케줄링(FCFS)First Come First Se..
프로세스와 스레드 개념
·
CS 지식/운영체제
프로세스(현재 실행 중인 프로그램)가 실행되면 커널 영역에 이들을 구분하는 PCB가 생성 된다. ∎  PCB운영체제는 여러 프로세스들을 CPU의 자원에 골고루 분배하기 위해, 프로세스들을 관리하는 자료구조가 필요한데, 이것이 프로세스 제어 블록(PCB)이다.프로세스와 관련된 정보가 저장되어 있다.PCB는 커널 영역에 생성되기 때문에 필요성이 끝나면 삭제 된다.PCB에는 PID(식별 번호), 자신의 차례가 오면 복원하기 위해 작업을 저장해 둔 레지스터 값, 프로세스의 현재 상태, CPU 스케줄링 정보, 메모리 저장 위치를 알려주는 메모리 관리 정보, 어떤 파일을 열고 어떤 입출력 장치를 사용했는지에 대한 목록들이 담겨 있다.  ∎   문맥 교환프로세스들이 돌아가며 자원을 할당 받아 사용할 때, 기존 정보들..
운영체제의 역할
·
CS 지식/운영체제
∎  운영체제란?실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램소중한 컴퓨터 자원(하드웨어)을 보호하고 잘 나눠 사용할 수 있도록 한다.위치 : 매우 특별한 프로그램이므로, 메모리의 커널 영역에 적재됨.운영체제는 메모리의 사용자 영역에 주소가 겹치지 않게 응용 프로그램들을 적재 시킨다.더 이상 실행되지 않는 프로그램은 삭제하며 메모리 자원을 관리한다.CPU를 사용할 때도 순서를 정해주고 사용 시간도 정해주어 질서를 정연하게 한다.   운영체제 안에는 커널과 커널이 아닌 부분으로 나뉜다 ⦁  커널이 아닌 부분사용자 인터페이스(사용자가 컴퓨터와 상호작용) ex. GUI(바탕화면 클릭), CLI(명령 프롬프트)⦁  커널인 부분운영체제의 심장 부분으로, 중요한 운영..
디스크 저장 구조
·
CS 지식/데이터베이스
∎  디스크 (보조기억장치)⦁  적은 비용으로 방대한 데이터를 저장할 수 있다. ⦁  여러장의 디스크가 쌓여져 있는 형태이다.   ⦁  각 디스크는 sector(트랙)으로 나누어져 있다.  ⦁  이 특정 sector를 통해 데이터를 찾게 되는데, 디스크의 회전 시간과 sector 탐색 시간까지 합치면 너무 오래 걸린다. ⦁  화일에 저장되어 있는 데이터를 하드 디스크에서 찾을 때, 하나씩 찾으면 오래 걸린다. ⦁  그래서 데이터(레코드)들은 블록 단위로 화일에 저장해놓고, 블록 단위로 데이터를 한번에 buffer에 올려놓고 필요한 만큼만 찾아서 사용한다. ⦁  레코드는 데이터 베이스에서 튜플을 의미한다. ⦁  레코드들을 블록화 하는것을 블로킹이라고 한다. ⦁  블로킹 할때, 블록의 자리가 남을 경우 레코..
데이터 블록과 인덱스
·
CS 지식/데이터베이스
데이터(레코드)들은 블록 단위로 디스크에 저장되어 있다.블록 채 찾아와 buffer에 놓고 필요한 데이터를 꺼내 사용한다.이 블록들은 인덱스(접근 경로)가 있는데, 블록와 인덱스의 정보를 저장해놓는 인덱스 파일이 존재한다.(레코드들 중 대표하는 값과 해당 블록의 주소 쌍으로 지정)  무순서, 순서, 해시 화일에서 데이터를 찾을 때순서키, 해시키 등을 이용하는데 데이터를 더 빨리 찾기 위해서 해당 주소를 이용한다.주소와 해당 값을 담고 있는 것을 인덱스(접근 경로)라고 한다. (인덱스 화일로 관리한다)   ∎  인덱스 종류단일 단계 인덱스 : 선형 형태로 되어있다. 이진 탐색 가능기본 인덱스 :기본키를 기준으로 정렬된 순서 파일의 인덱스블록당 하나의 데이터에 대해서만 엔트리를 가지면 된다.인덱스가 듬성듬성..
트랜잭션 - 동시성 제어와 회복
·
CS 지식/데이터베이스
∎  데이터 베이스에서 중요한 2가지- 동시성 제어트랜잭션 단위로 처리되어야 하는 프로세스에서 타인과 동시에 접근할 수 없게 하는 처리 - 회복한 프로세스에 여러 SQL문이 있을 경우, 중간에 끊겨 데이터 손실이 일어나면 안되기 때문에, 꼭 트랜잭션 단위로 묶어준다.트랜잭션이란?예를 들어 티켓팅을 할 때, 티켓팅 SQL문 묶음이 "한번에 처리" 되어야, 다른 사람의 요청과 혼돈되지 않는다.이렇게 한번에 처리해 주어야 하는 문장들 묶음을 "트랜잭션"이라고 한다.∎ 트랜잭션이 갖추어야할 성질 (ACID 성질)⦁  Atomicity 원자성 : 원자적 단위로 전부 실행되던지, 아예 실행되지 않던지 해야한다. 회복을 통해 보장한다. ⦁  Consistency Preservation 일관성 : 데이터베이스는 일관성..
질의 최적화 기법
·
CS 지식/데이터베이스
∎ 질의 처리SQL문 (고수준 언어)를 입력하면 그것이 DBMS 안에서 처리되는 과정을 뜻한다. ∎ 질의 최적화질의 처리를 할 때, 더 빠르게 처리될 수 있는 방법을 찾는 것이다.1. 입력된 SQL문을 최적화하기 위해2. 순서를 정해야 하고,3. 관계 대수식은 절차적 언어이기 때문에4. SQL문을 관계 대수식으로 만든다.5. 만들어진 관계 대수식을 파서 트리로 표현한다.∎  σ 셀렉트 연산의 최적화파일안에 데이터들이 여러 구조들로 저장되어 있다.선형 탐색이진 탐색기본 인덱스로 검색클러스터링 인덱스로 검색보조 인덱스로 검색∎  ⋈ 조인 연산의 최적화⦁  중첩 루프 조인 : A 테이블과 B 테이블을 중첩 루프를 돌려 모든 레코드 탐색 ⦁  단일 루프 조인 : A 테이블의 각 레코드는 루프를 돌리고, 각 레코..
응용 프로그램과 DB - 저장 프로시저, 저장 함수
·
CS 지식/데이터베이스
∎  프로그래밍에서 데이터 베이스 사용하는 방법 1. 임베디드 방식⦁  응용 프로그램 코드 안에 SQL문을 내포하여 사용한다. ⦁  SQL문들은 전처리기를 통해 DB 호출 함수로 변환하고 이 다음에 컴파일을 한다. ⦁  EXEC SQL와 END-EXEC로 호스트 언어 내에서 구분한다. ⦁  자바에서 내장된 SQL문은 SQLJ라고 부른다. ⦁  임베디드된 SQL문의 결과가 여러 튜플이 한꺼번에 나올 경우, 커서(반복자)를 이용해 하나씩 처리한다. ⦁  FETCH문으로 다음 튜플을 넘어감 ⦁  : (콜론)으로 변수를 사용 ⦁  정적인 프로래밍이다. 2. API를 활용한 라이브러리 방식✔  SQL CLI (Call Level Interface)⦁  프로그램 코드 안에서 라이브러리를 호출하여 데이터 베이스를 사..
관계 대수와 관계 해석
·
CS 지식/데이터베이스
✔ 관계 데이터 모델 : 구조/표현, 연산, 제약조건으로 이루어짐✔ 연산의 종류 : 관계대수, 관계 해석   ∎  관계 대수⦁  집합 연산자(∩,∪, - )를 사용하여 연산 ⦁  입력(릴레이션) -> 출력(릴레이션) (릴레이션의 연산을 통해 새로운 릴레이션 생성) ⦁  입력과 출력 릴레이션의 종류가 같으면 연산이 관계에 대해서 ‘닫혀 있음’ ⦁  연산의 결과에 또 연산을 할 수 있어, 관계 대수 표현식을 형성 ⦁  순서 / 절차적 언어 SELECT검색X, 조건에 맞는 결과들만 선택하는 연산횡적인 부분 집합을 필터 함교환법칙 성립, 연속적으로 SELECT 가능, PROJECT수직적 분할, 필요한 열만 선택중복 튜플이 제거되어 나옴교환 법칙 성립X RENAME릴레이션 이름을S로 변경, 애트리뷰트 이름을 B1..
영상 영역처리
·
CS 지식/영상 처리
∎  영상 포인터 처리하나의 픽셀을 대응되는 출력화소에 mapping 시키는 것으로 픽셀마다 개별적으로 처리한다.   ∎  영상 영역처리✔  픽셀의 주변 이웃 화소들에게도 영향을 받아 처리되는 것 (그전에 알아볼 개념)spatial frequency (공간 주파수) : 공간의 위치에 따라 주파수가 변하는 것 ✔  계산    해당 픽셀과 주변의 8개의 이웃화소를 convolution Mask와 곱하여 결과 픽셀을 도출 ✔  밝기 값 변화구간을 부드럽게 해주는 작업    ⦁  High Pass Filter (HPF) : 저주파 ➜ 고주파          ⦁   가운데 화소는 9이고 나머지는 -1로 구성된 필터이다          ⦁    sharpening 효과가 있다.     ⦁   Low Pass Fil..
윤씅
'분류 전체보기' 카테고리의 글 목록