ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 항해 99 5기 TIL_26
    항해 99 2022. 2. 5. 01:26

    ▶ Today I Learned

    <CS 스터디>

     

    [캐시]

     

    과거 CPU와 메모리는 비슷한 속도였지만 컴퓨터 발전에 따라 CPU는 빨라진 반면 메모리는 그 속도를 따라가지 못했다.

    이렇게 되면 CPU가 메모리를 기다리는 동안 아무 일도 하지 않는 현상이 발생할 수 있고 이를 해결하기 위해 생겨난 방법 중에는

    캐시가 있다.

     

    캐시는 쉽게 말해 별도의 저장고 같은 곳이다. 반복적으로 쓰는 데이터를 서버나 DB에 요청하지 않고 메모리에 저장해두는 것이다.

    그렇게 되면 이 다음 사용시 해당 데이터를 또 불러올 필요가 없으므로 성능이 대폭향상된다.

    여기서 원하는 데이터가 캐시에 존재하지 않을 경우 캐시 미스(Cache Miss),

    존재할 경우를 캐시 히트(Cache Hit)라고 부른다.

    기본적으로 캐시의 저장 공간은 작기 때문에 캐시미스가 많이 일어난 다면 더 반복적으로 쓰이는 데이터로 바꿔 끼우는 것이 좋다.

     

    [Decoupling]

     

    항상 같은 패턴으로 나아가던 것들이 서로의 반대 방향으로 나아가는 것

    경제를 예로 들자면, 오일과 가스의 가격은 비례관계, 오일이 오르면 가스가격이 오름, 그러나

    여기서 Decoupling이 발생하면 오일은 올랐는데 가스가격은 떨어지는 것임

    출처: https://www.investopedia.com/terms/d/decoupling.asp#:~:text=Decoupling is when the returns,state of its underlying economy.

     

    디커플링 설명에 앞서 의존성과 커플링을 보자.

    의존성: A와 B라는 모듈이 있다고 했을 때 A가 B에 의존한다는 것은 모듈 A가 제대로 작동하려면

    모듈 B가 필요하다는 것을 말한다. B는 A가 없어도 생존이 가능하다.

    커플링: 개발 측면에서 커플링(Coupling)은 서로 간 의존하는 것을 말한다.

     

    디커플링을 하게 되면 이런 의존관계 없이 한 개체가 여러 분야를 서로 커플링없이 다룰 수 있게 함.

     

     

    [Decoupling 디자인 패턴]

     

    1) 컴포넌트 Compenent

    빈 컨테이너에 필요할 때마다 원하는 기능을 갖다 **붙여 **포함시키는 방식. 부품과 같은 느낌

    • 각자의 기능을 가지고 있는 스스로 동작하는 독립적인 부품
      • 애니메이션만 관련있는 컴포넌트, 물리 기능만 관련있는 컴포넌트, 이동 시키는 컴포넌트 등등 각자 기능을 담당하는 컴포넌트들이 독립적으로 구현이 되어 있다.

    코드의 의존성을 줄이고 재활용성을 높인다.

    ex) 게임의 인벤토리 기능

    출처: https://ansohxxn.github.io/design pattern/chapter1/

     

    2) 이벤트 큐 Event Queue

    메시지를 보내는 시점과 처리시점을 다르게 하기 위한 패턴,

    사용자가 OS에 어떤 입력값을 주면 OS는 그것을 queue라는 저장소에 보관하고 APP은 이후 그것을 꺼내서 이용하는 방식

    ex) 게임에서 몬스터를 잡고 나서 z를 눌러 물건을 획득하세요.

    → 물건을 획득하라는 메시지가 몬스터를 잡은 이후 시점에 나와야 함

    출처: https://luv-n-interest.tistory.com/1112

     

    3) 서비스 중개자 Service Locator

    서비스를 구현한 구체적인 클래스는 숨긴 채 어디서나 해당 서비스에 접근할 수 있도록 해주는 패턴

    ex) 게임에서 돌이 굴러떨어지는 소리, 총을 쏘는 소리 등 모든 동작이 오디오 시스템에 연결되어야 함

    → 사운드를 출력하기 위해 각각의 소리에 맞는 오디오 클래스에 직접 접근해야하며

    해당 정적 클래스의 파일명은 무엇이고 어떻게 연동할지를 일일이 따져보아야한다.

    하지만 중개자가 있다면? 해당 중개자와 연결하면 된다!

    어떻게? 서비스는 여러 기능을 추상 인터페이스로 정의, 구체적 서비스 제공자는 이것을 상속받아 구현

    → 서비스 중개자는 서비스에 대한 접근만을 제공

     

    cf) 인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다. 컴퓨팅에서 컴퓨터 시스템끼리 정보를 교환하는 공유 경계이다.

     

    출처: https://luv-n-interest.tistory.com/1113

     

     

     

    ▶ 느낀 점

     

    잇츠 마 벌 떼이! 아마 두웟 아 라잌 아마 파뤼 투나잇 아마 키스 훔 아라잌! 유후!

    생일이어서 축하에 답장하느라 하루의 절반은 쓴 것 같다... 그래도 축하해주셨는데

    하나하나 정성들여 답장해드려야지 :)

    나도 그분들 덕에 너무나 기분이 좋았다

    그래도 팀과제와 CS 스터디 할건 하고! 필요한 강의도 조금이나마 들었다.

    뿌듯한 하루였다.

    내일은 다시 뙇! 집중 해야지!!

     

    ▶ 공부 시 참고 링크들

     

    https://mangkyu.tistory.com/69

     

    [Server] Cache(캐시)란?

    1. 캐시(Cache)란? [ Cache ] Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이

    mangkyu.tistory.com

     

     

     

     

     

     

     

    '항해 99' 카테고리의 다른 글

    항해 99 5기 TIL_28  (0) 2022.02.06
    항해 99 5기 TIL_27  (0) 2022.02.06
    항해 99 5기 TIL_25  (0) 2022.02.04
    항해 99 5기 TIL_24  (0) 2022.02.03
    항해 99 5기 TIL_23  (0) 2022.02.02
Designed by Tistory.