교육 : 모르는 개념 정리

호밀빵 굽는 쿼카·2022년 3월 7일
0

NHN Cloud 인턴

목록 보기
30/48

교육 : 안정적인 서비스 운영 을 듣고 모르는 개념이나 단어 정리

1. ORM이란?

Object Relational Mapping, 객체-관계 매핑

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)
  • 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
  • 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

ORM 장점

  • 객체 지향적인 코드로 인해 더 직관적이고, 비즈니스 로직에 더 집중할 수 있게 도와줍니다.
  • 재사용성 및 유지보수의 편리성이 증가합니다.
  • DBMS에 대한 종속성이 줄어듭니다.
  • 단순하게 get/set만 해주는게 목적이 아니라 객체지향적인 시스템을 위해서 관계형 데이터베이스의 설계부터 변화를 주고, 설계된 데이터베이스와 객체와의 관계에 대한 설정 등을 포함하여 보다 객체지향적인 시스템의 완성을 위한 도구

ORM의 발생 시초
우리가 어떤 어플리케이션을 만든다고 하면 관련된 정보들을 객체에 담아 보관하게 된다. 프로그래밍 실습 예제의 단골 손님격인 주소록을 만든다고 가정했을 때 주소록의 주체가 될 사람이라는 객체에는 주민등록번호, 이름, 키, 몸무게 등이 저장될 것이고 주소나 전화번호 같은 추가로 저장될 객체들이 연결 될 것이다. 이렇게 생성한 사람 객체를 영구적으로 저장하기 위해 파일이나 데이터베이스에 입력한다는 것은 객체와 그와 연결된 객체들을 데이터베이스의 테이블에 저장 한다는 것을 의미한게 된다. 즉, 테이블(Table)에 객체가 가지고 있던 정보를 입력하고, 이 테이블들을 "join"과 같은 SQL 질의어를 통해 관계 설정을 해 주게 된다. 여기서 문제는 이 테이블과 객체간의 이질성이 발생 하게 된다는 것 -> 이질성을 해결하기 위해 나타난 개념

2. 정적 SQL과 동적 SQL의 차이?

동적쿼리

  • 코드 실행 시점에 SQL 쿼리문이 동적으로 구성되고 실행되는 쿼리
  • Stored Procedure를 생성할 때 필요에 따라 동적 쿼리로 작성
  • 동적 쿼리 실행 SQL 문자열에 값이 바뀌는 변수를 넣어 쿼리문을 작성하게 되면 SP가 새로 캐싱되어 재사용성을 떨어트림
  • SQL문 자체가 동적으로 변하는 경우를 일컫는 말입니다.즉 Select 문장에서 조회되는 컬럼명이나 테이블, 조건절에서의 컬럼명등이 상황에 따라 변할 때 사용된다는 것이지요.

정적쿼리

  • 변수에 문자열을 대입하여 쿼리문을 작성하는 것이 아닌 일반적으로 작성된 SQL 쿼리
  • 정적 쿼리로 작성된 Stored Procedure는 새로 캐싱되지 않아 재사용성을 떨어트리지 않는다.

위 내용을 요약하자면 작성한 쿼리가 어떠한 상황에서도 변경되지 않는 쿼리가 정적쿼리가 될 것이고 입력값이나 특정 상황에 따라 쿼리문이 변경될 수 있는 쿼리가 동적쿼리이다. 하지만 글로만 보면 이해가 잘 되지 않는다,,

정적 SQL

select *
from table
where 1 = 1
and key1 = #변수1#

해당 변수1 에 다른 값을 대입해도 항상 조건은 key1

동적 SQL

select *
from table
where 1 = 1
if(#변수# != ''){
and key1 = #변수1#
}

변수1 의 값을 주느냐 안주느냐에 따라 sql이 달라짐

정적쿼리 > SELECT * FROM TABLE WHERE COLUMN=@COLUMS_DATA
동적쿼리 > SELECT @SELECT_COLUMN FROM TABLE WHERE COLUMS=@COULMN_DATA

3. CRONTAB

리눅스(Linux) 계열에서 특정 시간에 특정 작업을 하는 데몬을 Cron(크론) 이라 하고
크론(Cron) 이 언제 무엇을 하는지 특정 파일에 저장하는 것을 크론탭(Crontab) 이라고 한다
크론(Cron) 이라는 데몬이 원하는 시간에 원하는 명령 또는 프로그램 을 수행하도록 명령 리스트를 만드는 것이 크론탭(Crontab) 작업

크론탭(Crontab)은 언제 사용하나?

  • 특정 시간에 특정 작업을 해야할때
  • 반복된 시간에 반복된 작업을 해야할때
  • 예약 작업을 사용해야 할때

크론탭 표현식
5개의 필드로 구성됩니다.

<minute> <hour> <day-of-month> <month> <day-of-week> <command>
vi /etc/crontab 을 통해 크론탭 사용 가능

4. L7 CHECK이란?

L7 Health Check이란?

  • 무정지 배포를 위한 것
  • 정식 명칭은 L7 Health Check 인것 같음
  • OSI 7Layer 중 Layer7 계층의 어플리케이션 응답을 체크하는 방식

Health Check이란?

  • 로드밸런싱 서비스를 제공하는 다수의 서버의 상태를 점검하기 위해 사용되는 기술로, 서버의 상태를 주기적으로 체크해 서버의 상태가 통신이 불가능할 경우 서버를 서비스에서 제외해 서비스를 원활하게 제공하기 위해 이용
  • 서버의 상태를 주기적으로 점검함
  • 서버로 일정 시간 간격으로 서비스에 대해 open, close를 반복적으로 진행해 서비스 제공 가능 유무 점검
  • 전송 주기는 장애를 판단하기 위해 패킷을 전송하는 주기로 전송 주기가 짧을수록 서버의 장애 여부 정확히 파악

카카오의 L4 장비의 동작과 서비스 배포시 유의점 한 번 읽어보면 좋을 듯



참고링크

profile
열심히 굽고 있어요🍞

0개의 댓글