교육 : 안정적인 서비스 운영 을 듣고 모르는 개념이나 단어 정리
Object Relational Mapping, 객체-관계 매핑
ORM 장점
- 객체 지향적인 코드로 인해 더 직관적이고, 비즈니스 로직에 더 집중할 수 있게 도와줍니다.
- 재사용성 및 유지보수의 편리성이 증가합니다.
- DBMS에 대한 종속성이 줄어듭니다.
- 단순하게 get/set만 해주는게 목적이 아니라 객체지향적인 시스템을 위해서 관계형 데이터베이스의 설계부터 변화를 주고, 설계된 데이터베이스와 객체와의 관계에 대한 설정 등을 포함하여 보다 객체지향적인 시스템의 완성을 위한 도구
ORM의 발생 시초
우리가 어떤 어플리케이션을 만든다고 하면 관련된 정보들을 객체에 담아 보관하게 된다. 프로그래밍 실습 예제의 단골 손님격인 주소록을 만든다고 가정했을 때 주소록의 주체가 될 사람이라는 객체에는 주민등록번호, 이름, 키, 몸무게 등이 저장될 것이고 주소나 전화번호 같은 추가로 저장될 객체들이 연결 될 것이다. 이렇게 생성한 사람 객체를 영구적으로 저장하기 위해 파일이나 데이터베이스에 입력한다는 것은 객체와 그와 연결된 객체들을 데이터베이스의 테이블에 저장 한다는 것을 의미한게 된다. 즉, 테이블(Table)에 객체가 가지고 있던 정보를 입력하고, 이 테이블들을 "join"과 같은 SQL 질의어를 통해 관계 설정을 해 주게 된다. 여기서 문제는 이 테이블과 객체간의 이질성이 발생 하게 된다는 것 -> 이질성을 해결하기 위해 나타난 개념
위 내용을 요약하자면 작성한 쿼리가 어떠한 상황에서도 변경되지 않는 쿼리가 정적쿼리가 될 것이고 입력값이나 특정 상황에 따라 쿼리문이 변경될 수 있는 쿼리가 동적쿼리이다. 하지만 글로만 보면 이해가 잘 되지 않는다,,
select *
from table
where 1 = 1
and key1 = #변수1#
해당 변수1 에 다른 값을 대입해도 항상 조건은 key1
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
리눅스(Linux) 계열에서 특정 시간에 특정 작업을 하는 데몬을 Cron(크론) 이라 하고
크론(Cron) 이 언제 무엇을 하는지 특정 파일에 저장하는 것을 크론탭(Crontab) 이라고 한다
크론(Cron) 이라는 데몬이 원하는 시간에 원하는 명령 또는 프로그램 을 수행하도록 명령 리스트를 만드는 것이 크론탭(Crontab) 작업
크론탭(Crontab)은 언제 사용하나?
- 특정 시간에 특정 작업을 해야할때
- 반복된 시간에 반복된 작업을 해야할때
- 예약 작업을 사용해야 할때
크론탭 표현식
5개의 필드로 구성됩니다.<minute> <hour> <day-of-month> <month> <day-of-week> <command>
vi /etc/crontab 을 통해 크론탭 사용 가능
L7 Health Check이란?
- 무정지 배포를 위한 것
- 정식 명칭은 L7 Health Check 인것 같음
- OSI 7Layer 중 Layer7 계층의 어플리케이션 응답을 체크하는 방식
Health Check이란?
- 로드밸런싱 서비스를 제공하는 다수의 서버의 상태를 점검하기 위해 사용되는 기술로, 서버의 상태를 주기적으로 체크해 서버의 상태가 통신이 불가능할 경우 서버를 서비스에서 제외해 서비스를 원활하게 제공하기 위해 이용
- 서버의 상태를 주기적으로 점검함
- 서버로 일정 시간 간격으로 서비스에 대해 open, close를 반복적으로 진행해 서비스 제공 가능 유무 점검
- 전송 주기는 장애를 판단하기 위해 패킷을 전송하는 주기로 전송 주기가 짧을수록 서버의 장애 여부 정확히 파악
카카오의 L4 장비의 동작과 서비스 배포시 유의점 한 번 읽어보면 좋을 듯
참고링크