Blog
Anki
면접 질문 대비

ELK 스택에서 ELK가 각각 무슨 역할을 하나요?

답 보기
  • Elasticsearch
    • 데이터 저장소 및 검색/분석 엔진
  • Logstash
    • 데이터 수집 및 처리
    • 데이터를 가공(필터링, 변환, 형식화)하여 Elasticsearch에 전송
  • Kibana
    • 데이터 시각화 및 대시보드
    • Elasticsearch에 저장된 데이터를 시각화해서 사용자에게 제공

Prometheus, Grafana, Loki, Promtail 대해서 설명해주세요

답 보기
  • Prometheus

    • 모니터링 및 경고 시스템으로, 주로 시계열 데이터(시간에 따라 변하는 값)를 수집하고 저장하는 데 사용
    • Polling 방식으로 동작
      • Prometheus는 설정된 타겟(Endpoints)으로 주기적으로 요청을 보내 데이터를 가져옴
      • 장점 : Prometheus가 데이터를 제어하므로 장애 관리 용이.
      • 단점 : 타겟 엔드포인트가 반드시 데이터를 노출해야 함
  • Grafana

    • 데이터 시각화 및 대시보드 도구로, 다양한 데이터 소스에서 정보를 가져와 시각적으로 표현하는 역할
  • Loki

    • 로그 데이터 저장 및 검색 엔진
  • Promtail

    • Loki와 함께 사용되는 로그 수집기
    • Pushing 방식으로 동작
      • Promtail은 서버의 로그 파일을 읽고, 필터링 및 파싱한 후 데이터를 Loki로 전송
      • 장점: 로그 데이터를 실시간으로 전송 가능하며, Loki와의 통합에 최적화됨
      • 단점: Push 모델이므로 Promtail 설정 및 Loki 연동이 필요

템플릿엔진의 동작 방식을 생각해보고 ROR에서 MVC의 V를 Vue로 하는게 왜 말이 안되는건지 100자로 답해주세요.

꼬리 질문
  • 지금 당장 몰라도 됨

RoR에서 Vue를 사용하는 방법?

답 보기

템플릿 엔진은 서버에서 HTML을 생성해 클라이언트로 전달하지만, Vue는 클라이언트에서 DOM을 동적으로 렌더링합니다. ROR의 V는 서버 측 View를 의미하므로 Vue와 역할이 충돌합니다.

  • HTML (HyperText Markup Language)

    • HTML은 웹 페이지의 구조와 내용을 정의하는 마크업 언어입니다.
    • 웹 페이지의 텍스트, 이미지, 링크, 폼 등 다양한 요소를 배치하고 구성합니다.
    • 정적 문서입니다.
  • DOM (Document Object Model)

    • DOM은 HTML 문서를 프로그래밍적으로 조작할 수 있게 해주는 트리 구조의 객체 모델입니다.
    • 자바스크립트와 같은 프로그래밍 언어를 사용하여 웹 페이지의 구조, 스타일, 내용을 동적으로 변경할 수 있습니다.
    • 동적 문서 모델입니다.
  • 꼬리 질문 답

임베디드 템플릿(erb, ejs, php, ...)으로 마크업 짜놓고, 마크업 짜놓은거 기반으로 vuejs로 동적인 UI 제공하는게 의외로 해볼만한 트릭이에요.

Wait Free와 Lock Free에 대해서 설명해주세요

답 보기
  • 동시성 문제를 겪을 때 Lock을 사용하면 반드시 느려질 수 밖에 없음
    • 이 때 동시성 문제를 해결하면서도 좀 더 빠르게 동작하게 하기 위해서 사용하는게 Lock FreeWait Free
    • Lock을 사용하지 않고 CAS 연산을 통해서 동시성을 보장하는데, 이 때 Java에서는 Atomic을 활용해서 CAS 연산을 한다.
      • 예시 👇
AtomicInteger atomic = new AtomicInteger(0);
while(!atomic.compareAndSet(value, update)) {
  doSomethig();
}
  • Lock Free
    • 적어도 하나의 스레드가 진행됨을 보장
    • 일부 스레드는 무한정 대기할 수 있음
    • Wait Free보다 구현이 상대적으로 단순
    • 여러 스레드가 경쟁하지 않는 상황이라면 CAS 연산은 항상 성공하고, 여러 스레드가 경쟁을 한다고 해도 최소한 하나의 스레드는 반드시 성공하기 때문에 성공한 스레드는 작업을 진행되기 때문
  • Wait Free
    • 모든 스레드가 정해진 시간 내에 작업을 완료할 수 있음을 보장
    • 다른 스레드의 진행 상태와 관계없이 작업 완료 가능
  • Wait-Free는 Lock-Free의 상위 집합으로 볼 수 있음
    • 모든 Wait-Free 알고리즘은 Lock-Free이지만, 모든 Lock-Free 알고리즘이 Wait-Free인 것은 아님