IT 시스템의 데이터베이스에 부수적인 법률 문제에 대해
IT 시스템과 관련된 법적 문제를 이해하는 데에는 체계적인 법률 지식이 필요하게 되지만, 동시에 IT 시스템의 구성 요소에 대해 알아야 하는 것도 중요합니다. 이 글에서는 IT 시스템이 어떤 부품으로 구성되며, 이러한 부품들이 어떻게 상호 연관되어 기능하는지를 정리하고, 위탁자 측면에서 보기 어려운 데이터베이스와 특히 관련이 깊은 법적 문제에 대해 설명하겠습니다.
IT 시스템은 ‘화면’과 ‘로직’으로 구성된다
IT 시스템의 ‘화면’이란
IT 시스템의 구조를 이해하려 할 때, 가장 눈에 띄는 것은 화면 측의 외관일 것입니다. 실제로, 일반적인 시스템 개발 과정에서도, 기능의 세부 사항 등을 정리하는 ‘요구사항 정의’에 이어서 진행되는 것은 보통 ‘화면 설계’, ‘화면 전환’의 정리입니다. 이러한 화면 상의 외관은, 시스템 개발을 의뢰하는 위탁자에게도 당연히 눈에 띄는 분야이며, 또한 위탁자와 벤더 간의 커뮤니케이션이 가장 활발하게 이루어지는 영역이기도 합니다. 아래의 기사에서는, 시스템 개발의 전 과정에서 위탁자가 프로젝트의 성공을 위해 벤더에게 부담하는 ‘협력 의무’에 대해 설명하고 있습니다.
https://monolith.law/corporate/user-obligatory-cooporation[ja]
본 기사에서는, 위탁자가 시스템 개발에 대해 부담하는 협력 의무로서 주로, 기본 설계(즉, 화면) 등의 단계에서 벤더와 협력할 필요가 있다는 점을 설명하고 있습니다.
IT 시스템에서의 ‘화면’은 보통 HTML이나 CSS와 같은 컴퓨터 언어의 규칙에 따라 기술됩니다. IT 시스템의 ‘화면’에 대한 이야기는 ‘프론트엔드’, ‘UI(위탁자 인터페이스)’ 등 다양한 명칭으로 불리지만, 실제로는 위탁자 입장에서 ‘조작감’, ‘가독성’ 등을 주요 논점으로 다룹니다.
IT 시스템의 ‘로직’이란
그러나, IT 시스템이 ‘화면’ 중심이라면, 그것은 어떠한 ‘동작’이나 ‘변화’도 가지지 못하고, 단지 ‘화면’에 불과합니다. 위탁자로부터의 입력 수용, 출력 표시를 ‘화면’에서 수행하더라도, 그 과정에는 ‘계산 처리’가 있기 때문입니다.
이러한 위탁자의 눈에 띄지 않는, 일종의 ‘시스템의 뒷면’이라고 할 수 있는 부품에 의해 복잡한 계산이나 제어가 이루어집니다. 화면 측에서 데이터를 검색하거나, 데이터를 수정하거나, 추가하거나, 삭제하는 등의 처리는, 사전에 구축된 데이터베이스가 뒷받침되어야 가능합니다. 데이터베이스의 정보에 대한 각종 처리는, 보통 SQL이라는 컴퓨터 언어로 이루어집니다.
화면 측에 설치된 버튼 등을 트리거로 하여, 필요한 SQL 문의 실행까지의 경로를 만드는 것, 이를 통해 동작이나 변화를 가진 시스템의 전체 이미지가 완성됩니다.
참고로, ‘화면’에서 보이지 않는 각종 로직의 조립에 관련된 이야기는 ‘백엔드’ 등으로 불리는 경우가 있습니다.
시스템에 대한 이야기를 화면 측면의 ‘외관’만으로 논의하는 것은 위험하다
그동안의 설명은 (웹 상에서 작동하는 것을 가정한) IT 시스템의 구조의 기초가 됩니다. 이러한 사항에 대한 이해는 법률 논의, 프로젝트 분쟁 예방, 위기 관리 등의 측면에서도 큰 의미를 가집니다. 구체적으로는, 화면 상의 ‘외관’에만 집중하는 위탁자와, 눈에 보이지 않는 ‘로직’ 측면에서도 중요한 업무를 많이 맡고 있는 벤더 사이에서는, 커뮤니케이션의 오해가 발생할 수 있다는 것입니다.
위탁자와 벤더가 중요하게 생각하는 포인트가 전혀 다른 것이 위험
예를 들어, ‘화면’에 대한 이야기를 중심으로 IT 시스템에 대해 이야기하는 위탁자는 그 내부 구조의 복잡성에는 무관심할 수 있습니다. 그래서, 외관상으로는 ‘조금의 기능 추가’, ‘약간의 사양 변경’으로 보이는 것이 얼마나 많은 과정에 영향을 미치는지를 파악하지 못하는 경우가 있습니다. 예를 들어, 아래의 기사에서는 새로운 시스템 개발이라는 프로젝트에 대해, 현재 운영되고 있는 기존 시스템의 폐기를 진행할 때 자주 발생하는 법률 문제를 설명하고 있습니다.
https://monolith.law/corporate/the-transition-from-the-oldsystem[ja]
여기서는, 기존 시스템의 폐기에 따라, 새 시스템으로의 데이터 이전에서 종종 문제가 발생한다는 것을 설명하고 있습니다. 즉, 외관에서는 상상도 할 수 없을 정도로, 내부의 계산·제어 메커니즘이 복잡하게 얽혀 있을 수 있으며, 이는 위탁자 측에게 예상치 못한 문제의 원인이 될 수도 있습니다. 또한, ‘시스템을 만드는 측의 벤더의 마음’을 이해하지 못하기 때문에, 사후적인 변경이 조금씩 나오는 상황도 발생할 수 있습니다.
https://monolith.law/corporate/howto-manage-change-in-system-development[ja]
이러한 사후적인 사양 변경·기능 추가가 지시되는 경우를 가정하면, 보상의 사후 증액 가능성 등도 때때로 실제 문제가 될 수 있습니다.
https://monolith.law/corporate/increase-of-estimate[ja]
위탁자가 뒷면의 ‘로직’에 무관심해지는 것이 위험
또한, 위탁자가 관찰할 수 없는 부분이야말로, 문제가 발생했을 때 큰 사건으로 변해버리는 경우도 있습니다. 아래는 그런 예입니다.
유지보수, 보안 측면에서 문제가 발생하는 위험성
추가 기능을 구현하려 해도 할 수 없고, 사용하면서 점점 동작이 느려져서, 작동하지 않게 되는 상황이 이에 해당합니다.
또한, 화면 측에 구현된 코드의 불량을 이용하여, 원래 화면에 표시해서는 안 되는 개인 정보·기밀 정보를 빼내는 보안 공격을 하는 ‘SQL 인젝션’이라는 방법이 있습니다. 이것이 계기가 되어 심각한 분쟁이 된 사례에 대해서는, 아래의 기사에서 자세히 다루고 있습니다.
https://monolith.law/corporate/risks-of-libraryuse-and-measures[ja]
이 기사의 주제는 프레임워크나 라이브러리의 사용에 따른 위험성이지만, 게재하고 있는 판례는 SQL 인젝션을 이용한 취약점 공격이 이루어진 사례입니다.
운영 담당자의 업무에 거버넌스가 미치지 못하는 위험성
IT 시스템의 위탁자가 뒷면의 ‘로직’에 무관심한 것은, IT 시스템의 운영 담당자의 업무에 거버넌스가 미치기 어려워지는 문제와도 연결됩니다. 이 내용과 관련하여 아래의 기사에서는 ‘운영 담당자의 과실로 인한 데이터 손실’이라는 주제로, 데이터베이스를 다루는 업무의 중요성을 설명하고 있습니다.
https://monolith.law/corporate/dataloss-risk-and-measures[ja]
표면상으로는 정확하게 작동하고 있지만, 로직이 잘못되어 있는 위험성
시스템에 대한 이야기가 ‘화면’에 그치지 않는다는 것은, 표면상으로는 정확하게 작동하는 시스템이라도, 실제로는 ‘로직’이 잘못되어 있을 가능성이 있다는 것을 의미합니다. 이는, 매일의 기본 업무에서는 드러나지 않았더라도, ‘반년에 한 번’, ‘일년에 한 번’ 등의 비정규 업무에서 갑자기 발견될 수 있습니다.
이런 경우는, ‘한 번 납품이 완료된 시스템에 대해, 사후적으로 불량이 발견된 사례’로서, 법률상으로는 (채무 불이행이 아니라) 하자 보증 책임의 문제가 됩니다.
https://monolith.law/corporate/defect-warranty-liability[ja]
만약 검수 후에 결함이 발견된 대응책으로는, 아래의 기사에서 흐름을 자세히 설명하고 있습니다.
https://monolith.law/corporate/system-flaw-measure-after-acceptance[ja]
요약
시스템 개발과 법률, 각각에 대한 체계적인 이해를
시스템 개발과 관련된 법률 문제는, 법률적 논점을 특정하기 위한 전제로서, IT 시스템의 구성 요소 중 어떤 부품에서 문제가 발생했는지를 파악하는 것도 중요합니다. 법률적 문제이든, IT 시스템의 문제이든, 시스템 개발 프로젝트에서 발생하는 분쟁에서는 전체적인 그림을 잃지 않도록 하는 것, 다른 업종 간의 협력에 힘을 쏟는 것이 특히 중요하다고 생각됩니다.
Category: IT
Tag: ITSystem Development