728x90
반응형

REDIS Remote Dictionary Server

  • 디스크가 아닌 주 메모리(RAM)에 데이터를 저장하는 데이터베이스
    • 따라서 데이터가 주메모리보다 크면 안됨
  • 단일 스레드로 설계됨
  • 디스크 검색이 필요한 다른 DBMS보다 자료 접근이 훨신 빠름
    • 때문에 성능 향을 위한 캐시 서버로 자주 사용됨
      • 자주 접근하는 데이터 및 계산에 많은 시간이 소요되는 데이터를 캐싱해 빠른 접근 제공
  • 키 - 값 쌍을 가진 JSON 객체를 저장하는, 스키마 없는 데이터 베이스(NoSQL)
  • 장점
    • 인메모리 키 - 값 저장소: 순수한 메모리 읽기는 빠른 읽기/쓰기 속도 및 빠른 응답 제공
    • IO 다중화(멀티플렉싱): 단일 스레드가 여러 개의 열린 소켓 연결에서 동시에 대기
    • 저수준 데이터 구조: 효율적인 저수준 데이터 구조 사용
  • 단점
    • 휘발성: 시스템이 갑자기 중단되면 Redis 내의 데이터 손실 가능

Redis Cache 동작 방식

  • 클라이언트의 데이터 요청
  • Redis Cache에서 해당 키 탐색
  • 키 발견 시 - Cache Hit
    • 캐시된 데이터 응답
  • 키 발견 실패 시 - Cache Miss

728x90
반응형

'데브옵스 devOps > Redis' 카테고리의 다른 글

[REDIS] 레디스 명령어  (0) 2024.10.28
728x90
반응형

결합도 Coupling

  • 외부 모듈과의 연관도 또는 모듈 간의 상호의존성을 나타내는 정도
  • 소프트웨어 구조에서 모듈간의 관련성을 측정하는 척도
  • 한 모듈이 변경되기 위해서 다른 모듈의 변경을 요구하는 정도
    • 결합도가 높을 수록 함께 변경해야 하는 모듈의 수가 늘어나게 됨

결합도 특징

  • 모듈 연관성 없음
  • 인터페이스 의존성
  • 복잡성 감소
  • 파급효과 최소화

결합도의 유형

  • 자료 < 스탬프 < 제어 < 외부 < 공통 < 내용
  • 내용 결합도
    • 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
    • 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합된 경우의 결합도
  • 공통 결합도
    • 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고, 전역 변수를 갱신하는 식으로 상호작용 하는 경우의 결합도
  • 외부 결합도
    • 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 결합도
  • 제어 결합도
    • 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용해 통신하는 경우의 결합도
    • 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상 발생하는 결합도
  • 스탬프 결합도
    • 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
  • 자료 결합도
    • 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우의 결합도

응집도 Cohesion

  • 모듈의 독립성을 나타내는 개념
  • 모듈 내부 구성요소 간 연관 정도 의미
  • 하나의 모듈은 하나의 기능을 수행하는 것을 의미
  • 즉 변경이 발생할 때 모듈 내부에서 발생하는 변경의 정도
    • 하나의 변경을 수용하기 위해 모듈 전체가 변경 -> 높은 응집도
    • 하나의 변경을 수용하기 위해 일부 모듈의 일부만 변경 -> 낮은 응집도

특징

  • 유사기능 영역 구성
  • 단일 책임 할당
  • 함수 간 상호 협력

유형

  • 우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적
  • 우연적 응집도
    • 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도
    • 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행할 경우의 응집도
  • 논리적 응집도
    • 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
  • 시간적 응집도
    • 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
  • 절차적 응집도
    • 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 통신적 응집도
    • 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
  • 순차적 응집도
    • 모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도
  • 기능적 응집도
    • 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

결론

  • 응집도는 높아야 하고, 결합도는 느슨해야 한다.
  • 설계를 변경하기에 편리해 지기 때문
728x90
반응형

'백엔드 Backend' 카테고리의 다른 글

[보안] 보안 공격 종류  (0) 2024.11.04
[테스팅] 어플리케이션 테스팅  (2) 2024.11.01
악성코드 종류  (0) 2024.10.16
SOLID 원칙  (0) 2024.10.08
비동기 Asynchronous 란?  (0) 2024.10.04
728x90
반응형

_Async/Await_

 

자바스크립트에서 async/await는 뭘까?

 

async/await는?

Promise 기반으로 동작하지만, then/catch/finally 와 같은 프로미스 후속 처리 메서드에 콜백 함수를 전달하여

비동기 처리 결과를 후속 처리할 필요 없이 마치 동기 처리처럼 프로미스를 사용할 수 있다.

결과적으로 Promise를 더 쉽게 다룰 수 있게 해 준다.

async/await을 사용하면 비동기 함수들을 마치 동기 함수처럼 작성하여 동작할 수 있게 해 준다.

 

function getData(){

/*

 비동기 함수

 */

}

// 프로미스

new Promise((resolve, reject) => {

const result = getData();

if ( /* 비동기 작업 수행 성공 */) {

resolve(result);

} else {

reject(result);

}

})


// async/await

async function getData() {

await /* 비동기 함수 */

}

 

Async

async 함수는 async 키워드를 사용해 정의하고, 언제나 프로미스를 반환한다.

 

Await

await 키워드는 프로미스가 settled 상태가 될 때까지 대기하다가 settled 상태가 되면 프로미스가 resolve 한 처리 결과를 반환한다.

 

참고 링크

- async/await (https://learnjs.vlpt.us/async/02-async-await.html)

728x90
반응형

'백엔드 Backend > Nodejs' 카테고리의 다른 글

[NODEJS] Promise란?  (0) 2024.10.22
[NODEJS] 이벤트 루프란?  (0) 2024.10.01
Nodejs 란?  (1) 2024.09.30

+ Recent posts