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가 커널 모드이면 사용 가능하고..
윤씅
유일무이