트랜잭션 프로세서

마지막 업데이트: 2022년 5월 12일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
3

Power BI를 사용하여 프로세스 마이닝을 수행하는 방법

데이터 입도는 크게 트랜잭션 데이터와 분석 데이터의 두 가지 범주로 분류할 수 있습니다. 트랜잭션 데이터는 일반적으로 가장 낮은 세분성 수준에 있는 반면 분석 데이터는 일반적으로 더 높은 세분성 수준으로 가져오는 롤업 또는 집계됩니다. 집계 또는 분석 데이터는 근본 원인 분석 수행, 핵심 성과 지표 모니터링 및 기타 유사한 목적을 위한 대시보드, 드릴다운 또는 드릴스루 유형의 분석에 유용할 수 있습니다. 데이터 마이닝, 머신 러닝 또는 인공 지능과 같은 분석의 경우 일반적으로 마이닝을 통한 샘플링 또는 추론을 위해 트랜잭션 리포지토리에서 데이터를 가져옵니다. 일반적으로 서로 다른 데이터 단위를 처리하거나 소비하는 시스템이 상당히 다르기 때문에 이 두 가지 데이터 파벌의 문제는 동일한 시스템에서 데이터 마이닝 및 대시보드를 사용하려고 할 때 발생합니다. 데이터 소비자가 대시보드뿐만 아니라 데이터 마이닝을 수행할 수 있도록 하는 것은 두 가지 유형의 시스템을 사용하여 각 유형의 데이터 처리를 가능하게 하는 경우 매우 어려운 작업이 될 수 있습니다. 데이터 엔지니어링의 최신 트렌드는 최종 사용자가 R 및 Python과 같은 데이터 프레임워크와 다양한 기본 및 3을 사용하여 다양한 데이터 처리 관련 작업을 수행할 수 있도록 하는 것입니다. rd 데이터 분석에 필요한 기능을 포함하고 최종 사용자가 작동할 수 있는 표준 인터페이스를 노출하는 파티 스마트 시각화.

지속적으로 생성되고 수집되는 데이터의 가장 큰 범주 중 하나는 로그입니다. 로그는 로그를 생성하는 소스에 따라 매우 다양합니다. 티켓 또는 사고 관련 로그와 같은 운영 로그는 데이터 로그의 큰 구성 요소를 형성합니다. 운영 로그를 분석하고 이 데이터에서 운영 인텔리전스를 생성하는 데 전념하는 데이터 과학의 특정 지점을 프로세스 마이닝이라고 합니다. 조직은 정교한 시스템을 사용하여 대규모 프로세스 마이닝 시스템을 구축합니다. 최종 사용자를 위한 셀프 서비스 방식으로 초기 프로세스 마이닝 탐색을 수행하기 위해 보고 도구는 출발점으로 가장 좋은 방법 중 하나가 될 수 있습니다. Power BI Desktop은 시작점으로 프로세스 마이닝을 수행하는 데 사용할 수 있으며 프로세스 마이닝 요구 사항의 복잡성과 깊이에 따라 Power BI를 계속 사용하거나 추가 시스템을 사용하도록 선택할 수 있습니다.

프로세스 마이닝

프로세스 마이닝에 Power BI를 사용할 예정이므로 자신의 컴퓨터에 Power BI Desktop을 이미 설치했다고 가정합니다. Power BI는 기본 시각화를 제공할 뿐만 아니라 타사 시각화 가져오기를 지원합니다. 프로세스 시각화를 수행하는 한 가지 방법은 Power BI 외부에서 데이터를 분석 및 준비하고 사전 처리된 데이터를 보고하는 데만 사용하는 반면 프로세스 마이닝을 수행하는 또 다른 방법은 필요한 데이터 분석을 수행할 수 있는 Power BI 자체에서 지능형 시각화를 사용하는 것입니다. 어느 정도 프로세스 마이닝을 위해. 이 문서에서는 Power BI 시각적 개체 갤러리에서 무료로 제공되는 타사 시각화를 사용하는 두 번째 접근 방식을 사용합니다. 이 시각화 공급자의 이름은 ProcessM이고 시각화 이름은 Blpm 및 PmBI이며 둘 다 Process Mining Business Intelligence를 나타냅니다. 프로세스 마이닝에 사용할 수 있는 다른 많은 공급업체와 그러한 시각화가 있을 것입니다. 우리는 토론을 위해 이 특정 시각화를 사용하여 프로세스 마이닝을 처음 접하는 사람들에게 프로세스 마이닝이 어떤 모습일지 실질적으로 이해하게 될 것입니다. 다음에서 Blpm 시각화로 이동할 수 있습니다. 여기. 이 시각화를 사용하기 위한 첫 번째 단계는 시각적 컨트롤 자체를 다운로드하고 선택적으로 함께 제공되는 샘플 파일을 다운로드하는 것입니다. 비주얼 설명에서 언급했듯이 이 시각화는 내부적으로 일반적인 OLAP(온라인 분석 처리) 큐브와 유사한 구조를 생성한 다음 이 데이터를 사용하여 데이터에서 추출한 지능을 힘의 형태로 나타냅니다. 디렉터 플로우 그래프.

이 시각화의 제품 페이지에서 다운로드한 샘플 보고서 파일을 엽니다. 보고서의 모델 보기로 이동하면 아래와 같이 표시됩니다. 두 개의 작은 테이블은 필터용이고 핵심 테이블은 수리 예 테이블입니다. 이 테이블의 필드는 이 테이블이 보유하고 있는 티켓 데이터에서 마이닝 프로세스 구조로 들어갈 수 있는 일반적인 필드에 대한 단서를 제공합니다.

데이터 모델

데이터 보기로 전환하면 이 테이블의 실제 데이터가 표시됩니다. 이 테이블의 레코드를 살펴보고 스크롤하면 이 테이블에 티켓 관련 데이터와 같은 많은 이벤트가 있음을 알 수 있습니다. 티켓을 제출한 고객은 Customer_Cluster라는 필드로 분류됩니다. 수명 주기 필드는 사건의 단계를 캡처합니다.

프로세스 데이터

조직에는 규정된 프로세스가 있지만 운영 데이터를 기반으로 수행되는 프로세스를 분석하거나 이해하려는 다자간 환경에서는 프로세스 마이닝을 수행해야 합니다. 이 시각화에서 추론한 인텔리전스를 시각화하기 위해 이제 이 샘플 보고서의 보고서 보기로 이동할 수 있습니다. 이 시각화는 시스템에 설치되고 Power BI에 액세스할 수 있는 R에 종속됩니다. R이 이미 설치되어 있다고 가정하고 보고서 보기를 열면 특정 R 패키지를 설치하고 이 트랜잭션 프로세서 보고서에 대한 스크립트를 활성화하라는 메시지가 표시됩니다. 시각화의 전제 조건을 검토하고 설치 버튼을 클릭하여 패키지 설치를 허용합니다.

필수 R 패키지

패키지가 설치되면 앞에서 본 운영 데이터에서 생성된 프로세스의 강제 방향 그래프를 볼 수 있습니다. 그래프에 표시된 각 엔터티는 프로세스의 해당 단계에서 발견된 인시던트 수와 함께 프로세스의 단계를 보여줍니다. 두 엔티티를 연결하는 화살표의 가중치에 표시된 연관 가중치와 함께 한 엔티티를 다른 엔티티와 연관시키는 것은 이 시각화가 우리에게 더 쉽게 만들어준 실제 추론이며, 수동으로 수행했다면 시간이 많이 걸렸을 것입니다. 이 시각화가 엔터티와 엔터티를 연결하는 경로를 추론한 방법을 이해하려면 이 시각화를 렌더링하는 데 사용되는 필드를 살펴보는 것이 좋습니다.

공정 그래프

매우 높은 수준의 탐색 목적을 위한 기본 수준에서 이 시각적 개체는 프로세스 마이닝을 위한 좋은 시작점으로 간주될 수 있습니다. 실제 실제 시나리오에서는 시각적 개체가 더 많은 인텔리전스를 도출하고 운영 데이터에서 추출한 프로세스 그래프 또는 흐름으로 이어지는 요인을 설명하는 보다 정교한 기능이 필요할 수 있습니다. 동일한 공급업체는 아래와 같이 PmBI로 알려진 프로세스 마이닝을 위한 또 다른 시각화를 제공합니다. 이 비주얼에 대한 설명을 보면 이전 버전보다 기능이 더 풍부한 비주얼임을 쉽게 알 수 있습니다.

PmBI 프로세스 마이닝

이 시각화와 함께 제공되는 샘플 Power BI 보고서 파일에서 이 시각적 개체에 사용된 데이터를 탐색하면 아래와 같이 이전 시각화에서 사용한 것과 동일한 데이터를 사용했음을 알 수 있습니다.트랜잭션 프로세서

샘플 데이터

여기에서 아래와 같이 이 시각화, 막대 차트 및 깔때기 차트를 사용하여 만든 대시보드를 볼 수 있습니다. 여기에서 데이터는 보다 조직화된 방식으로 표시되고 시각화는 사용자 정의를 위한 많은 기능을 제공합니다.

프로세스 마이닝 출력

프로세스의 다른 단계를 연결하는 가장자리 중 하나에 마우스 포인터를 가져가면 아래와 같이 정보를 더 자세히 볼 수 있습니다.

툴팁

이 비주얼리제이션의 메뉴 옵션과 이 비주얼리제이션의 서식 옵션을 클릭하여 프로세스 마이닝을 위해 이 비주얼리제이션이 제공하는 기능의 잠재력을 최대한 활용하여 이 비주얼리제이션의 기능을 살펴보십시오.

이 문서에서는 프로세스 마이닝의 기본 사항과 Power BI에서 프로세스 마이닝을 사용할 수 있는 사용 사례를 배웠습니다. 프로세스 마이닝 범주의 시각화 중 하나에 대해 배웠고 샘플 보고서 파일뿐만 아니라 시각적 개체를 다운로드하고 이러한 시각화에서 렌더링된 데이터 및 출력을 분석하여 이러한 시각화에 대해 배우는 간단한 방법을 배웠습니다.

트랜잭션 프로세서

1

2

3

4

문제 풀이
관련 포럼글
자유 댓글
    댓글이 없습니다.
    아직 글이 없습니다.
과목 선택
  • 전체 랜덤 보기
  • 맞췄던 문제 제외하고 보기
  • 풀었던 문제 제외하고 보기
  • 맞췄던 문제만 보기
  • 틀렸던 문제만 보기
정보보안기사 복구 문제의 한계

정보보안기사는 기출문제를 공개하지 않는 시험입니다.

본 사이트에 수록된 문제들은 기출문제와 유사하게 복구된 것이며 기출문제와 정확히 일치하지 않습니다. (이 부분은 다른 모든 사이트 및 정보보안기사 수험서 또한 마찬가지 입니다.)

문제들 중 일부는 위키나 블로그 등을 참조하여 직접 복구하고 일부는 웹상에서 복구된 문제를 수집하여 재정리하였습니다. 만약 복구 문제에 본인이 직접 만든 그림, 본인이 직접 작성한 문장 등이 그대로 사용되어 조치를 원하시는 경우 연락주시면 지체 없이 처리하도록 하겠습니다.

저희 문제은행은 집단지성 발현을 위해 IT위키를 통한 해설을 제공해드리고 있습니다.

문제와 관련된 위키 문서를 선택해서 등록할 수 있습니다. 위키 문서는 이용자분께서 직접 내용을 보강하거나 위키 문서를 추가하실 수 있습니다!

위키 해설 추가/수정

IT, 컴퓨터공학, 보안 등 기술 용어 전문 위키 https://itwiki.kr/

모든 문제들의 저작권은 원저작권자에게 있습니다. 본 사이트는 웹상에 공개되어 있는 문제만 모아서 보여드립니다.저작권 안내

개발하는 너구리

프로필사진

전투너구리

« 2022/07 » 트랜잭션 프로세서 트랜잭션 프로세서
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

개발하는 너구리

DEADLOCK 방지 본문

DEADLOCK 방지

1) 교착 상태(DEADLOCK) 개요

교착상태 란, 둘 이상의 스레드 트랜잭션 프로세서 간에 특정 자원(테이블,행..) 대한 양방향 참조(종속) 관계가 발생한 경우를
말한다. 교착 상태는 주로 단순한 RDBMS 보다는, MULTI THREAD 가 가능한 시스템에서 발생할 가능성이
더 크다.
특정 트랜잭션의 스레드는 하나의 이상의 자원에 잠금을 얻을 수 있다. 지금까지 보았던 것처럼 잠겨진
자원을 다른 트랜잭션의 스레드가 엑세스하려 한다면, 대상 리소스가 해제될 때까지 기다려야 하는
BLOCKING 이 발생한다. 이 때 대기 중인 스레드는 리소스를 소유한 스레드에 대해 해당 리소스에 대한
종속 관계를 갖고 있다고 말한다.

예를 들어, 트랜잭션 1을 실행하는 스레드 T1에는 EMP 테이블에 대한 배타적 잠금이 있고, 트랜잭션 2를
실행하는 스레드 T2는 CUST 테이블에 대한 배타적 잠금이 있다.
이때 T2는 EMP에 대해 잠금을 요청할 수 있다. 그러나 T1이 현재 배타적 잠금을 가지고 있으므로
BLOCKING 이 발생한다. T2는 차단되고 T1이 완료되기를 기다릴 수밖에 없는 상황이다.
이것은 일반적인 BLOCKING 이다.
그러나, 이런 상황에서 T1이 CUST 테이블에 잠금을 요청하려 하면, 역시 T2가 잠궈 놓았으므로
BLOCKING 이 발생한다. 일반적인 트랜잭션 프로세서 BLOCKING 이라면, 잠금을 건 해당 트랜잭션이 COMMIT/ROLLBACK
전까지만 기다리면 된다. 하지만 지금은 일반적인 BLOCKING 이 아니다.
이런 때는 서로 잠금을 해제할 수 없으며, 또한 커밋하거나 롤백할 수도 없다.
이렇게 서로 잠금을 소유하고 있는 두 트랜잭션의 스레드에서, 상대방이 소유한 자원을 원하는 경우에는
교착 상태가 발생한다. 두 스레드 모두 트랜잭션을 커밋하거나 롤백할 때까지 자신이 소유한 리소스를
해제할 수 없고, 또 다른 트랜잭션이 소유한 리소스를 대기하고 있으므로 트랜잭션을 커밋하거나
롤백할 수도 없다.


BEGIN TRAN
UPDATE EMP
SET SAL = 40000
WHERE EID = 1
DBCC OPENTRAN
EXEC SP_LOCK 51

실행한 SP_LOCK명령에 의해, 현재 해당 키인 EID 1번에 대해 X 락이 걸려 있는 것이 확인된다.


BEGIN TRAN
UPDATE CUST
SET CTEL = '032-333-9999'
WHERE CID = 2
DBCC OPENTRAN
EXEC SP_LOCK 52

역시 키인 CID 1번에 대해 X 락이 걸려 있다.
이번엔 첫 번째 트랜잭션에서 두 번째 트랜잭션에서 배타적 잠금을 설정한 CID 1번을 수정시도 해보자.
SQL Server 가 잠금을 요청할 것이나, 현재 배타적 잠금이 벌써 두 번째 트랜잭션에 의해 잠금이
설정된 상태이므로 BLOCKING 이 발생한다. 이것은 일반적인 BLOCKING 이다.
그러므로 계속 대기상태에 접어든다.


BEGIN TRAN
UPDATE EMP
SET SAL = 40000
WHERE EID = 1
DBCC OPENTRAN
EXEC SP_LOCK 51
DELETE CUST
WHERE CID = 2

SELECT @@TRANCOUNT
ROLLBACK TRAN

현재 BLOCKING 이 설정되어 있다.
아래의 쿼리를 보면, 이번에는 두 번째 트랜잭션에서 다시 첫 번째 트랜잭션에서 배타적 잠금을 걸고
있는 자원인 EMP 테이블의 EID 값에 대해서 삭제작업을 시도해보자. 또 BLOCKING 이 발생한다.
그러나 이번에는 DEADLOCK 이 발생하게 되고, 그리고 두 트랜잭션 중 하나만 계속 진행 중인
상태로 남고 나머지 하나는 자동으로 ROLLBACK 된다.


BEGIN TRAN
UPDATE CUST
SET CTEL = '032-333-9999'
WHERE CID = 2
DBCC OPENTRAN
EXEC SP_LOCK 52
DELETE EMP
WHERE EID = 1
ROLLBACK

위에서 보여주는 바로는 두 번째 트랜잭션이 에러번호 1205번을 출력하고, 취소되었다.
그리고 첫 번째 트랜잭션은 여전히 진행 중이다.


BEGIN TRAN
UPDATE EMP
SET SAL = 40000
WHERE EID = 1
DBCC OPENTRAN
EXEC SP_LOCK 51
DELETE CUST
WHERE CID = 2

SELECT @@TRANCOUNT
ROLLBACK TRAN

이렇게 BLOCKING 상태가 계속 진행되지 않고 하나의 트랜잭션이 바로 취소되는 이유는, DEADLOCK
상태를 취소하지 않으면 두 트랜잭션 모두 자신의 잠금을 풀 수 없기 때문에 잠금상태가 영원히
지속되기 때문이다. DEADLOCK 상태는 트랜잭션이 스스로 잠금을 풀 수 없으므로, SQL Server 가
자동으로 둘 중 하나의 잠금을 풀고 트랜잭션을 취소시키는 것이다.

여러분들이 해야할 일은 이렇게 DEADLOCK 일어나 트랜잭션 중 하나가 취소된 것을 감지하고
해당 트랜잭션을 다시 실행하거나 취소하는 처리이다. DEADLOCK 감지는 @@ERROR 1204번으로 한다.
어떤 트랜잭션에서 @@ERROR 1205번 에러가 발생했다면 데드락이 발생했다는 것이고,
해당 트랜잭션을 제어해주는 로직을 여러분들이 해당 트랜잭션 내에 추가해야 하는 것이다.

/* 참고
교착 상태는 종종 일반적인 BLOCKING 과 혼동된다. 한 트랜잭션이 다른 트랜잭션이 원하는
리소스를 잠그고 있으면 두 번째 트랜잭션이 해당 잠금이 해제되기를 기다린다. 기본적으로,
LOCK_TIMEOUT이 설정되지 않는 한, SQL Server 트랜잭션 시간은 제한되지 않는다.
이 경우 두 번째 트랜잭션이 차단되지만 교착 상태는 아니다.
*/

이것은 명령프로프트에서 실행하는 명령어이다. SQL Server 시작 옵션 중의 하나인 /T 옵션(대문자)를
사용해서 SQL Server를 시작하게 되면 볼 수 있다.
교착 상태에서 이 추적 플래그 1204는 대기 상태의 스레드, 이 스레드가 대기하고 있는 리소스,
리소스 간의 종속 관계 주기를 나타낸다.

추적 플래그 1204 보고서 용어

추적 정보 1204는 관련된 리소스에 따라 다른 정보를 반환하지만 일반적으로 보고서에는
다음과 같은 용어가 포함된다 .

- Node:x
교착 상태 체인에서 항목 번호(x)를 표시한다.

- Lists
잠금 소유자가 다음 Grant, Convert 및 Wait 목록의 일부일 수 있다.

- Grant List
리소스의 현재 소유자를 열거한다.

- Convert List
잠금을 더 높은 수준으로 변환하려는 현재 소유자를 열거한다.

- Wait List
리소스에 대한 현재 새 잠금 요청을 열거한다.

- SPID: x ECID: x
병렬 프로세스의 경우 시스템 프로세스 ID 스레드를 확인한다. 항목 SPID x ECID 0은 주 스레드를
나타내며 항목 SPID x ECID > 0 은 같은 SPID에 대한 하위 스레드를 나타낸다.

- Statement Type
SELECT, INSERT, UPDATE 또는 DELETE 문 등이며, 스레드는 이에 대해 사용 권한을 갖는다.

-Line #
현재 명령문 배치에 있는 줄을 나열하는 데, 이 줄은 교착 상태가 발생할 때 실행된다.

- Input Buf
현재 배치에 있는 모든 명령문을 나열한다.

- Mode
스레드가 요청하고 허용하고 또는 대기하는 특정 리소스에 대한 잠금 유형을 보여준다.
모드는 IS(Intent Shared), S(Shared), U(Update), IX(Intent exclusive), SIX(Shared with intent exclusive)
및 X(Exclusive) 등이다.

- RID
잠금이 걸려 있거나 요구되는 테이블 안의 단일 행을 확인한다.

- RID는 추적 플래그 1204에서 RID: db_id:file_id:page_no:row_no로 표시된다.
예를 들면, RID: 1:1:1253:0입니다.

- TAB
잠금이 걸려 있거나 요구되는 테이블을 확인한다. TAB은 추적 플래그 1204에서 db_id:object_id로 표시됩니다.
예를 들면 TAB:2:2009058193 이다.

- KEY
잠금이 걸려 있거나 요구되는 인덱스 안의 키 범위를 확인한다. KEY는 추적 플래그 1204에서
KEY: db_id:object_id:index_id로 나타난다. 예를 들면, KEY: 2:1977058079:1 이다.

- PAG
잠금이 걸려 있거나 요구되는 페이지 리소스를 확인한다. PAG는 추적 플래그 1204에서
PAG: db_id:file_id:page_no로 나타난다. 예를 들면, PAG: 7:1:168 이다.

- EXT
익스텐트 구조를 확인한다. EXT는 추적 플래그 1204에서 EXT: db_id:file_id:extent_no로 나타난다.
예를 들면, EXT: 7:1:9이다.

- DB
데이터베이스 잠금을 확인한다. DB는 추적 플래그 1204에서 다음 방법 중 하나로 나타난다.
DB: db_id
DB: db_id[BULK-OP-DB], 이것은 백업 데이터베이스가 갖는 데이터베이스 잠금을 확인한다.
DB: db_id[BULK-OP-LOG], 이것은 특정 데이터베이스에 대해 백업 로그가 갖는 잠금을 확인한다.

- IND
인덱스 리소스에서 만들어진 인덱스가 갖는 잠금을 확인한다. IND는 추적 플래그 1204에서
다음 방법 중 하나로 나타난다.
IND: db_id:object_id:index_id
IND: db_id:object_id:index_id[INDEX_ID], 이것은 인덱스 ID가 잠겼음을 나타난다.
IND: db_id:object_id:index_id[INDEX_NAME], 이것은 인덱스 이름이 잠겼음을 나타난다.

- APP
응용 프로그램 리소스가 갖는 잠김을 확인한다. APP는 추적 플래그 1204에서 APP: lock_resource로
나타난다. 예를 들면, APP: Formf370f478 이다.

SQL Server가 응용 프로그램 리소스를 교착 상태에서 처리하지 않으면, 해당 응용 프로그램
리소스 소유자는 앞에서 설명한 오류 메시지를 받지 않는다.
대신에 이 응용 프로그램은 sp_getapplock 저장 프로시저가 해당 응용 프로그램 리소스에서 실행될 때
"-3" 반환 코드를 받환받는다.

- Victim Resource Owner
교착 상태 주기를 끊기 위해 SQL Server가 처리하지 않는 진행 중인 스레드를 보여준다.
선택된 스레드(SPID x ECID 0로 확인)와 기존의 모든 하위 스레드(SPID x ECID > 0로 확인)는 트랜잭션 프로세서 제거된다 .

- Next Branch
교착 상태 주기에 관련된 동일한 SPID에서 두 개 이상의 하위 스레드를 나타낸다.

교착 상태가 병렬 처리와 관련이 있으면 여러 하위 스레드가 통신 버퍼에서 차단될 수 있으며,
스레드 한 개는 다른 하위 스레드에 대해 대기 상태로 된다. 다른 모든 스레드가 교착 상태와 관련이
있는 경우에만 교착 상태 상황이다. Next Branch는 대체 경로를 추적하는 교착 상태 주기를 나타낸다.

/* 참고
일반적으로 SQL Server는 실행을 취소했을 때 가장 손해가 적은 트랜잭션을 실행하는 스레드를
교착 상태 희생자로 선택한다. 또는 사용자가 SET 문을 사용하여 세션의 DEADLOCK_PRIORITY를
LOW로 설정할 수 있다. DEADLOCK_PRIORITY 옵션은 교착 상태 상황에서 세션의 중요도를 판단하는
방법을 제어한다. 세션이 LOW로 설정되어 있으면 교착 상태가 발생했을 때
해당 세션이 희생자로 선택된다.
*/

SET DEADLOCK_PRIORITY
이 명령은 교착 상태에 있을 때 세션이 반응하는 방법을 제어한다. 교착 상태는 두 프로세스에
잠긴 데이터가 있고, 다른 프로세스가 그 잠금을 해제할 때까지 자신의 잠금을 해제하지 않을 때 발생한다.

3) 교착상태 해결
교착상태가 걸린 저장 프로시저나 일괄처리 내에서는 교착상태에 대한 오류처리를 할 수 없다.
해당 처리가 종료된 후 따로 처리해 주어야 한다.


CREATE PROC UP_LOCKTEST
AS
BEGIN TRAN
UPDATE CUST
SET CTEL = '032-333-9999'
WHERE CID = 2
--DBCC OPENTRAN
--EXEC SP_LOCK 52
DELETE EMP
WHERE EID = 1
COMMIT TRAN
GO

IF @@ERROR = 1205
BEGIN
EXEC UP_LOCKTEST
SELECT 'OK'
END

4) 교착상태 최소화
교착 상태를 완전히 피할 수는 없다. 그러나 교착 상태 수를 최소화할 수는 있다.
교착 상태를 최소화하면 트랜잭션 처리량이 늘어나고 트랜잭션 수가 적어지기 때문에
시스템 오버헤드가 줄어든다.

1] 같은 순서로 개체에 액세스하게 한다.
모든 동시 트랜잭션이 같은 순서로 개체에 액세스하면 교착 상태가 일어날 가능성이 줄어든다.
예를 들어, 두 개의 동시 트랜잭션이 EMP 테이블에 대해 잠금을 얻은 다음 CUST 테이블에 대해
잠금을 얻으면, 다른 트랜잭션이 완료될 때까지 한 트랜잭션이 EMP 테이블에서 BLOCKING 된다.
첫 번째 트랜잭션이 COMMIT /ROLLBACK 하면 두 번째 트랜잭션은 계속 진행된다.
그리고 교착 상태는 발생하지 않게 된다. 모든 데이터 수정에 대해 저장 프로시저를 사용하는 것은,
개체 액세스 순서를 표준화할 수 있는 방법이 된다.

2] 트랜잭션 중 사용자 상호 작용을 피한다.
사용자 간섭 없이 실행 중인 일괄 처리의 속도는, 응용 프로그램에서 요청한 매개 변수에 대한
프롬프트에 응답하는 등 사용자가 직접 쿼리에 응답하는 속도에 비해 매우 빠르므로
사용자 상호 작용이 필요하도록 트랜잭션을 작성하지 않는 것이 좋다.
예를 들어, 트랜잭션이 사용자 입력을 기다리고 있는데 사용자가 식사를 하러 가거나 퇴근한 경우
사용자는 트랜잭션을 완료할 수 없다. 트랜잭션이 소유한 잠금은 트랜잭션이
COMMIT /ROLLBACK 될 때만 해제되므로 이렇게 하면 시스템 처리량이 현저히 줄어들게 된다.
교착 상태가 발생하지 않아도 같은 리소스에 액세스하는 다른 트랜잭션이 차단되므로 트랜잭션이
완료되려면 기다려야 하기 때문이다.

3] 트랜잭션을 하나의 일괄 처리로 짧게 유지한다.
교착 상태는 보통 여러 개의 긴 트랜잭션이 같은 데이터베이스에서 동시에 실행될 때 발생한다.
트랜잭션 실행 시간이 길수록 배타적 또는 업데이트 잠금 시간이 길어지고 다른 작업을 차단하여
교착 상태가 발생할 가능성이 높아진다.
그러나, 트랜잭션을 하나의 일괄 처리로 유지하면 트랜잭션 중 네트워크 왕복이 최소화되므로
트랜잭션을 완료하고 잠금을 해제하는 데 걸리는 시간을 줄일 수 있다.

4] 낮은 TRANSACTION_ISOLATION 레벨을 사용한다.
트랜잭션을 더 낮은 격리 수준에서 실행할 수 있는지 확인해 본다. READ UNCOMMITTED 를 구현하면
첫 번째 트랜잭션이 완료될 때까지 기다리지 않고 이전에 읽은(수정하지 않은) 데이터를 읽을 수 있다.
READ UNCOMMITTED 등 낮은 잠금 수준을 사용하면 SERIALIZABLE 등의 높은 잠금 수준보다
짧은 기간 동안 공유 잠금을 보유하므로 잠금 경쟁률이 줄어든다.

5] 바운드 연결을 사용한다.
바운드 연결을 사용하면 같은 응용 프로그램에서 열고 있는 둘 이상의 연결을 함께 사용할 수 있다.
두 번째 연결에서 얻은 잠금은 주 연결에서 얻은 것처럼 보유되며 그 반대의 경우도 마찬가지로 처리된다.
따라서 서로를 BLOCKING 하지 않는다.

트랜잭션 프로세서

트랜잭션(transaction)이란 "쪼갤 수 없는 업무 처리의 최소 단위"를 말한다. 거래내역이라고도 한다. '트렌젝션'이 아니라 '트랜잭션'이 올바른 표기법이다. 영어로 간략히 Tx라고 표기하기도 한다. 1초당 처리할 수 있는 트랜잭션의 개수를 TPS라고 한다.

개요 [ 편집 ]

트랜잭션은 은행 ATM이나 데이터베이스 등의 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다. 예를 들어, A라는 사람이 B라는 사람에게 1,000원을 지급하고 B가 그 돈을 받은 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 만약 A는 돈을 지불했으나 B는 돈을 받지 못했다면 그 거래는 성립되지 않는다. 이처럼 A가 돈을 지불하는 행위와 B가 돈을 받는 행위는 별개로 분리될 수 없으며 하나의 거래내역으로 처리되어야 하는 단일 거래이다. 이런 거래의 최소 단위를 트랜잭션이라고 한다. 트랜잭션 처리가 정상적으로 완료된 경우 커밋(commit)을 하고, 오류가 발생할 경우 원래 상태대로 롤백(rollback)을 한다.

목적 [ 편집 ]

트랜잭션은 데이터베이스 서버에 여러 개의 클라이언트가 동시에 액세스 하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지하고자 할 때 사용한다. [1] 데이터베이스 기능 중, 트랜잭션을 조작하는 기능은 데이터베이스 완전성(integrity) 유지를 확신하게 한다. 단일 트랜잭션은 데이터베이스 내에 읽거나 쓰는 여러 개 쿼리를 요구한다. 이때 중요한 것은 데이터베이스가 수행된 일부 쿼리가 남지 않는 것이다. 예를 들어, 송금을 할 때 한 계좌에서 인출되면 다른 계좌에서 입금이 확인되는 것이 중요하다. 또한 트랜잭션은 서로 간섭하지 않아야 한다. 만약 쿼리 하나가 실패하면, 데이터베이스 시스템은 전체 트랜잭션 또는 실패한 쿼리를 롤백 한다. 이것은 DBMS가 어떻게 사용되고 셋업 되었느냐에 따라 다르다. 트랜잭션은 커밋전에 언제든지 수동으로 롤백 될 수 있다. 간단한 트랜잭션의 경우 아래 양식의 SQL 언어로 데이터베이스 내에서 실행된다. [2]

  • Begin the transaction [3]
  • Execute several queries(DB내 갱신이 아직 적용되지 않는다.)
  • Commit the transaction(트랜잭션이 성공적이며, 갱신이 실제 적용됨.) [4]

조건 [ 편집 ]

트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적인 단위로 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위이다. 하나의 트랜잭션은 커밋(commit) 되거나 롤백이 된다. [5] 데이터베이스의 트랜잭션이 안전하게 수행되기 위해서는 ACID 조건을 충족해야 한다. ACID란 Atomicity(원자성), Consistency(일관성), Isolation(고립성), Durability(지속성)의 약자로서, 데이터베이스의 트랜잭션이 안전하게 수행되기 위한 4가지 필수적인 성질을 말한다.

원자성 [ 편집 ]

원자성(atomicity)은 하나의 트랜잭션이 더 이상 작게 쪼갤 수 없는 최소한의 업무 단위이다. 트랜잭션이 데이터베이스에 모두 반영되던지, 아니면 전혀 반영되지 않아야 하며 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것으로 즉, All or Nothing의 개념으로서 작업 단위를 일부분만 실행하지 않는다는 것을 의미한다. 트랜잭션 실행 도중 문제가 발생했을 경우 중단된 상태가 아닌 모두 실패하거나, 모두 완성되거나 둘 중 하나의 상태가 되어야 한다. 즉, 100개 명령어로 구성된 트랜잭션 중 99개 완료 1개 실패가 된다면, 이는 무조건 실패로 간주하여 트랜잭션 시작 전 상태로 돌려야 한다. 또한 100개가 모두 성공했을 시 트랜잭션은 성공이기 때문에 중간 상태가 없다. 트랜잭션은 사람이 설계한 논리적인 작업 단위이기 때문에 일처리가 작업 단위 별로 이루어져야 사람이 다루는데 무리가 없다. 만약 트랜잭션 단위로 데이터가 처리되지 않는다면, 설계한 사람은 데이터 처리 시스템을 이해하기 힘들 뿐만 아니라, 오작동 했을 시 원인을 찾기가 매우 힘들어진다. 트랜잭션 내의 모든 명령은 반드시 완벽하게 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다. 트랜잭션이 원자성이라는 성질을 지니게 된 이유는 중간에 끊기게 되면 이후 해당 트랜잭션의 어디서부터 이어서 수행되어야 하는지 모르기 때문이다. [1] [5] [6] [7] [8]

  • 원자성 보장 : 트랜잭션에서 원자성은 수행하고 있는 트랜잭션에 의해 변경된 내역을 유지하면서, 이전에 커밋된 상태를 임시 영역에 따로 저장함으로써 보장한다. 즉, 현재 수행하고 있는 트랜잭션에서 오류가 발생하면 현재 내역을 날려버리고 임시 영역에 저장했던 상태로 롤백 한다. 이전 데이터들이 임시로 저장되는 영역을 롤백 세그먼트(rollback segment)라고 하며, 현재 수행하고 있는 트랜잭션에 의해 새롭게 변경되는 내역을 데이터베이스 테이블이라고 한다. 다시 말해, 트랜잭션의 원자성은 롤백 세그먼트에 의해 보장된다고 할 수 있다. 그런데 오류가 발생하면 롤백 하는데, 트랜잭션의 길이가 길어지게 되면 확실하게 오류가 발생하지 않는 부분도 다시 처음부터 작업을 수행해야 한다. 따라서 확실한 부분에 대해서는 롤백이 되지 않도록 중간 저장 지점인 세이브포인트(save point)를 지정할 수 있다. 세이브포인트를 지정하게 되면 롤백 할 때 세이브포인트 이전은 확실하다 간주하고 그 이후부터 진행하게 된다. [1]

일관성 [ 편집 ]

일관성(consistency)은 트랜잭션이 완료된 결괏값이 일관적인 DB 상태를 유지하는 것을 말한다. 시스템이 가지고 있는 고정요소는 수행 전과 후의 상태가 같아야 하며 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것으로 트랜잭션이 진행되는 동안 데이터베이스가 변경되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라, 처음 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행된다. 이렇게 함으로써 각 사용자가 일관성 있는 데이터를 볼 수 있는 것이다. 트랜잭션 수행 전후의 데이터베이스 상태는 각각 일관성이 보장되는 서로 다른 상태가 된다. 트랜잭션 수행이 보존해야 할 일관성은 기본 키, 외래 키 제약과 같은 명시적인 무결성 제약 조건들뿐만 아니라, A에서 B로 돈을 이체할 때 A와 B 계좌의 돈의 총합이 같아야 한다는 사항과 같은 트랜잭션 프로세서 비명시적인 일관성 조건들도 있다. [1] [5] [6] [7] [8] [9]

  • 일관성 보장 : 트랜잭션에서 일관성은 트랜잭션 수행 전/후에 데이터 모델의 모든 제약 조건(기본 키, 외래 키, 도메인, 도메인 제약조건 등)을 만족하는 것을 통해 보장한다. 예를 들어 Movie와 Video 테이블이 있을 때 Video 테이블의 기본 키(primary key)인 movie_id가 외래키로 존재한다고 가정한다. 만약 movie_id의 제약 조건이 Movie 테이블에서 변경되면, Video 테이블에서도 movie_id가 변경되어야 한다. 한 쪽의 테이블에서만 데이터 변경사항이 이루어져서는 안되는 것이다. 이때 트랜잭션의 일관성을 보장하기 위한 방법은 어떤 이벤트와 조건이 발생했을 때, 트리거(Trigger)를 통해 보장하는 것이다. 트리거는 '방아쇠'라는 뜻인데, 데이터베이스 시스템이 자동적으로 수행할 동작을 명시할 때 사용된다. 즉, 어떤 행위의 시작을 알리는 것이다. [1]

고립성 [ 편집 ]

고립성(isolation)이란 하나의 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것이다. 즉, 트랜잭션 끼리는 서로를 간섭할 수 없다. 트랜잭션이 실행하는 도중에 변경한 데이터는 이 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조하지 못하게 하는 특성이다. 데이터베이스는 클라이언트들이 같은 데이터를 공유하는 것이 목적이므로 여러 트랜잭션이 동시에 수행되어야 한다. 이때 트랜잭션은 상호 간의 존재를 모르고 독립적으로 수행되어야 한다. 고립성은 격리성이라고도 하는데 이를 유지하기 위해서는 여러 트랜잭션이 동시에 접근하는 데이터에 대한 제어가 필요하다. 여러 트랜잭션이 동시에 수행되더라도 각각의 트랜잭션은 다른 트랜잭션의 수행에 영향을 받지 않고 독립적으로 수행되어야 한다. 한 트랜잭션에서 데이터베이스를 변경한 내용은 트랜잭션이 커밋되기 전까지는 다른 어떤 질의나 트랜잭션과도 고립되어야만 한다. 즉, 각 트랜잭션은 시스템 내에서 동시에 수행되고 있는 다른 트랜잭션들을 알지 못하는 것이다. 한 트랜잭션의 중간 결과가 다른 트랜잭션에게는 숨겨져야 한다는 의미인데, 이러한 성질이 보장되지 않으면 트랜잭션이 원래 상태로 되돌아갈 수 없게 된다. DBMS의 병행 제어 모듈이 트랜잭션의 고립성을 보장하며 예를 들어 설명하자면 하나의 트랜잭션이 A라는 계좌에서 작업을 하고 있을 경우 다른 트랜잭션이 A계좌에 대해 참조하거나 관여할 수 없고 작업이 끝날 때까지 대기해야 하는 것을 말한다. [1] [7] [8] [9]

  • 고립성 보장 : 병행처리 과정에서 트랜잭션의 고립성이 왜 보장되어야 하는지 알 수 있다. OS의 세마포어(semaphore)와 비슷한 개념으로 lock&excute unlock을 통해 고립성을 보장할 수 있었다. 즉, 데이터를 거나 쓸 때는 문을 잠궈서 다른 트랜잭션이 접근하지 못하도록 고립성을 보장하고, 수행을 마치면 언락(unlock)을 통해 데이터를 다른 트랜잭션이 접근할 수 있도록 허용하는 방식이다. 트랜잭션에서는 데이터를 읽을 때, 여러 트랜잭션이 읽을 수는 있도록 허용하는 공유 록(shared_lock)을 한다. 즉, 공유 록은 데이터 쓰기를 허용하지 않고 오직 읽기만 허용하는 것이다. 또한 데이터를 쓸 때는 다른 트랜잭션이 읽을 수도 쓸 수도 없도록 하는 배타 록(exclusive_lock)을 사용한다. 그리고 읽기, 쓰기 작업이 끝나면 언락을 통해 다른 트랜잭션이 록(lock)을 할 수 있도록 데이터에 대한 잠금을 풀어준다. 단, 록(lock)과 언락을 잘못 사용하면 데드락(deadlock)상태에 빠질 수 있다. 즉, 모든 트랜잭션이 아무것도 수행할 수 없는 상태가 되는 것이다. [1]

지속성 [ 편집 ]

트랜잭션이 정상적으로 종료된 다음에는 영구적으로 데이터베이스에 작업의 결과가 저장되어야 한다. 지속성(durability)트랜잭션 프로세서 은 트랜잭션의 성공 결과 값은 장애 발생 후에도 변함없이 보관되어야 한다는 것으로 트랜잭션이 정상적으로 완료된 경우에는 버퍼의 내용을 하드디스크(데이터베이스)에 확실히 기록해야 하며, 부분 완료(Partial Commit)된 경우에는 작업을 취소(Aborted)하여야 한다 즉, 정상적으로 완료 혹은 부분 완료된 데이터는 DBMS가 책임지고 데이터베이스에 기록하는 성질이 지속성이며 영속성이라고 표현하기도 한다. [7] [8] [9]

특징 [ 편집 ]

무정지성 [ 편집 ]

트랜잭션 기능의 대표적인 이점 중 하나는 무정지성의 향상이다. 즉, 운영체제 장애 등의 서버 장애가 발생하여 그로부터 데이터베이스를 재가동한 때에 '장애 직전까지의 커밋 결과를 손실하지 않고 마치는 것'이 가능하다. 트랜잭션을 지원하지 않는 데이터베이스의 경우 OS 장애뿐만 아니라 데이터베이스 프로세스가 비정상적으로 종료하기만 해도 데이터베이스가 손상될 수 있다. 깨진 데이터베이스를 복구하려고 해도 일부 데이터가 없어지거나 완전히 복구되지 않는 등 완전한 회복이 불가능한 경우도 많다. 오라클(Oracle)과 InnoDB 같은 트랜잭션 대응의 데이터베이스에서는 이러한 문제가 발생하지 않는데, REDO 로그(데이터베이스에서 수행한 작업을 다시 실행하는 로그)를 이용한 아키텍처로 무정지성을 보장하고 있기 때문이다.

트랜잭션 프로세서

Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.

Offcanvas

1111Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.

세상의 모든 IT 리서치 자료 - 넘버스 Numbers

“클라우드를 해킹하라” API가 가장 위험한 이유

클라우드 보안이 얼마나 효과적인지를 측정하는 주요 지표 중 하나가 클라우드 보안 연합(CSA)의 클라우드 컴퓨팅 최고 보안 위협(Top Threats to Cloud Computing) 목록일 것이다.

2년마다 한 번씩 발간되는 이 목록의 새 버전이 최근 발표됐는데, 가장 눈에 트랜잭션 프로세서 띄게 성장한 것이 바로 안전하지 않은 인터페이스와 API이다. 2017년 API는 클라우드 보안 위협 목록에 3위로 첫 등장했지만, 2019년에는 7위로 낮아졌다. 올해 목록에서는 2위로 훌쩍 순위가 높아졌다. 급격한 순위 변동의 원인이 무엇인지, 이런 변화 속에서 클라우드를 보호하기 위해 취해야 할 조처는 무엇인지 알아보자.
ⓒ Getty Images Bank

API의 급부상

우선 트랜잭션 프로세서 API에 대한 의존도가 급격하게 커졌다. 웹 기반 애플리케이션 인프라에서 API 기반 인프라로의 이전이 빠르게 진행됐으며, 이는 웹 트래픽 분석을 통해 확인할 수 있다. 시퀀스 시큐리티(Cequence Security)의 2021년 하반기 트래픽 분석에서 21억 건의 트랜잭션 중 70%는 API를 통해 수행된 것이었다. 이런 변화는 점점 더 가속화되고 있다. 리서치 트랜잭션 프로세서 회사 ESG(Enterprise Strategy Group)는 현재 웹 앱과 웹 사이트의 28%가 API를 사용하고, 2년 내로 비율이 2배 이상 증가할 것으로 전망했다.

API는 개발자에게 클라우드 서비스를 구축할 수 있는 편리한 빌딩 블록을 제공하지만, 극히 민감한 데이터에 대한 액세스도 가능해 해커의 주요 공격 대상이 된다. ESG의 조사에서도 응답 기업의 1/4은 잘못 구성된 API에 대한 공격을 경험했으며, 1/5은 계정 탈취 공격을 받은 것으로 나타났다. 마지막으로 특히 우려되는 부분은 이들 기업의 27%만이 공개된 OWASP 문제를 해결하기 위한 조처를 취했다는 것이다.

공격의 파괴력은 상당하다. 공격을 받은 기업의 40%는 서비스 중단을 경험했으며, 고객과 브랜드 평판에 연쇄적인 피해가 발생했다. 부정적인 고객 경험 34%, 주주 가치 하락 34%, 매출 손실도 26%의 기업이 경험했다. 내부적인 파급효과도 있어서 41%의 기업은 직원이 악영향을 받고 38%는 추가 보안 제품이나 서비스를 배치해야 했다.

공격 툴과 기법

API가 CSA 목록의 상위에 있는 이유는 여기에 있다. API는 보호하기 매우 까다롭기 때문이다. 공격자는 다른 취약점이나 악용 기법을 이용하기 보다는 API가 동작하는 방식을 악용한다. 이른바 리빙 오프 더 랜드(Living off the Land, LotL) 공격이다. 이 공격에는 서명이나 규칙을 위반하는 행위가 없기 때문에 전통적인 보안 솔루션이 이런 활동을 탐지하기가 매우 어렵다. 하지만 많은 기업이 여전히 IPS나 WAF 같은 차세대 방화벽, 애플리케이션 보안 툴 등에 의존하는데, 이들 중 어떤 솔루션도 API가 남용되고 있다는 것을 보여주는 변칙적인 행위를 잡아내지 못한다.

더욱 우려되는 것은 많은 기업이 이런 사실을 인지하지 못하고 기존 툴이 API 보안도 맡고 있다고 생각한다는 점이다. 문제의 핵심에 있는 것은 바로 이런 불일치로, 이 때문에 API는 가장 드러나는 위협 대상이 되고 있다. API 보안이 중요하다는 것을 알고 있는 기업도 많다. 클라우드 마이그레이션 원격 근무 환경 보호, 위협 탐지를 통해 드러나기 때문이다. 하지만 기존 보안 툴에 대한 잘못된 믿음 때문에 여전히 공격에 취약한 상태이다.

통합된 접근법

그렇다면 API 보안 문제를 더 효과적으로 해결하기 위해서는 어떤 조처를 해야 할까? 무엇보다도 먼저 API 보안은 API의 전체 라이프사이클을 보호하는 것이라는 인식이 중요하다. 이를 위해서는 전략적인 접근이 필요한데, 보안이 API 관련 개발 단계부터 배치, 그리고 제거까지 전 과정에 내장되어야 한다. 예를 들어, 시프트 레프트 접근법을 도입해 개발 단계부터 코딩 오류의 위험을 줄여야 한다.

API를 탐지하기 위한 디스커버리는 지속적으로 수행되어야 하며, 발견된 API를 잊어버리고 방치하지 않도록 해야 한다. 또한 보안팀이 공개적으로 노출된 API와 자원에 대한 공격자의 관점을 얻을 수 있는 기회도 제공한다. 발견한 API는 인벤토리로 지속적으로 추적해야 하며, 올바르게 구성하고 업데이트해야 한다.

모니터링은 애플리케이션 보안 솔루션과 관련된 서명이나 규칙 기반 프로세스에서 벗어나 행위 기반의 프로세스에 중점을 둬야 한다. 이런 접근이 의심스럽거나 악의적인 활동을 찾아내는 데 더 효과적이며, 성능이나 API 적용을 방해하지 않고도 API에 대한 위험한 변경을 탐지할 수 있다.

마지막으로 API 보안에는 적극적인 방어가 포함되어야 한다. API는 자동화된 공격의 대상이 되기 쉬운데, 이런 공격은 스텔스 기법을 사용해 공격을 은폐한다. 공격이 무력화되고 실패하고 공격에 지치면 아무리 집요한 공격자라도 공격을 그만 둘 가능성이 커진다.

이 모든 요소를 통합적으로 적용하면, API와 클라우드 환경의 특성에 맞는 포괄적이고 통일된 API 보안을 구현할 수 있다. API 도입이 계속 증가하면서 적절한 툴과 기술을 사용해 API 보안 문제 해결에 착수해야 할 시점이다. 그렇지 않으면, 2년 후에는 API 보안이 CSA 위협 목록의 1위에 올라있을 것이다.

*Jason Kent는 시퀀스 시큐리티의 HIR(Hacker in Residence)이다.
[email protected]


0 개 댓글

답장을 남겨주세요