개발자

SQL이 여전히 널리 사용되는 5가지 이유

Charly Batista | InfoWorld 2024.03.06
구조적 쿼리 언어(Structured Query Language), SQL은 여전히 가장 광범위하게 사용되는 프로그래밍 언어다. 스택 오버플로우의 2023년 언어 인기 조사에서도 4위에 올랐다. 전문 개발자 절반 이상(51.52%)이 업무에 SQL을 사용 중이며, 코딩을 배우는 사람 중에서는 약 1/3(35.29%)이 SQL을 사용하는 것으로 나타났다. 
 
ⓒ Pro Church Media / Unsplash

SQL은 수십년 동안 사용되면서 개발자 사이에서도 엇갈린 평가를 받는다. 수없이 많은 다른 언어가 등장했다가 사라지는 와중에도 SQL이 여전히 사용되는 이유는 무엇일까? SQL의 미래가 여전히 밝은 이유는 무엇일까? 


편재성과 안정성

SQL이 여전히 사용되는 대표적인 이유는 편재성이다. SQL에 대한 지식은 많은 개발자에게 기본 요소이며, 그만큼 가용 인력 풀이 넓다. 결과적으로 SQL 기술을 갖춘 사람에 대한 수요에 대응하고 경력을 개발하기 위해 더 많은 사람이 SQL을 배우게 된다. 

편재성 외에 SQL은 안정적이기도 하다. 개발자가 의존할 수 있는 효과적인 표준이고, 버전이 바뀌어도 크게 변경되지 않으므로 장기적인 지원 계획에 적합하다. 또한 팀이 데이터 인프라를 미리 계획할 수 있다. 구성원의 역할이 바뀌면서 다른 개발자에게 프로젝트를 인수인계할 때도 더 간단하다. 

따라서 SQL은 애플리케이션 내의 데이터에 대한 호환성 요구사항을 더 쉽게 충족하도록 해준다. 데이터 구성요소의 데이터를 다루는 수단으로 SQL을 사용하면 요구사항의 변경에 따라 다른 옵션을 사용하는 방식으로 비교적 용이하게 전환할 수 있다. 예를 들어, 한 데이터베이스에서 다른 데이터베이스로 전환하는 경우 SQL 용어를 사용하면 애플리케이션 로직이 어떻게 작동하는지 수정할 필요가 없다. 어느 곳에서나 동일하기 때문이다. 

SQL이 표준과 같은 역할을 하는 데서 얻는 한 가지 이점은 데이터의 이식 가능성을 구현하기가 쉽다는 점이다. SQL을 사용하면 자체적인 언어와 데이터 저장 방법이 있는 특정 데이터베이스에 묶이지 않고 자신이 데이터를 소유하면서 원하는 대로 데이터를 다룰 수 있다. 사실상 데이터베이스와 그 데이터베이스가 무엇을 제공할 수 있는지에 대해 더 이상 구체적으로 생각할 필요가 없다. 대신 인프라 계획 프로세스에 대한 제어 포인트로 언어 내에 존재하는 툴을 사용할 수 있다. 

예를 들어, 마이SQL과 같은 데이터베이스를 실행하다가 포스트그레SQL과 같은 다른 옵션으로 바꾸려는 경우를 고려해 보자. 두 데이터베이스의 운영 및 관리 방식은 다를 수 있지만 기능적인 관점에서 SQL을 사용한 데이터 조사는 동일한 결과를 제공한다. 


과학적 근거 

SQL가 여전히 인기 있는 이유는 기술적 관점에서도 살펴볼 만한 가치가 있다. 기술적 관점에서 SQL의 가장 큰 이점은 논리적으로 설계됐다는 점이다. 즉, 작동 방식을 이해하면 매끄럽고 현명하게 사용할 수 있다. 

이를 위해 SQL과 관계형 데이터베이스 간의 연결 고리를 살펴봐야 한다. 많은 개발자에게 SQL은 관계형 데이터베이스 모델과 매우 밀접하게 연결되며, 모든 장단점도 그대로 갖고 있다. 그러나 언어인 SQL은 관계형 데이터베이스와는 별개이다. 이 둘을 하나로 뭉뚱그려 생각하지 않는 것이 중요하다. 

지금은 많은 비관계형 데이터베이스가 테이블형 모델과 SQL 언어를 채택했다. SQL과 관계형 모델은 꽤 오래 전부터 동의어로 사용되고 있는데, 비관계형 데이터베이스가 부상하면서 이런 경계는 더 유동적으로 변했다. 예를 들어 일부 키-값 저장소와 일부 문서 저장소 데이터베이스는 데이터 정리에 테이블형 구조를 채택했고, 일부는 접근성을 높이고 개발자가 제품을 더 쉽게 다룰 수 있도록 SQL의 하위 집합 또는 SQL과 비슷한 쿼리 언어를 제공한다. 

시간이 지나면서 관계형 모델은 데이터베이스 설계에 매우 효과적임이 입증됐다. 모델이 매우 정확한 수학적 이론을 기반으로 하기 때문이다. 이런 강력한 이론적 토대는 컴퓨터 과학 및 소프트웨어 엔지니어링 전반에서 관계형 데이터베이스가 여전히 높은 인기를 누리는 이유다. SQL은 이 논리적인 이점과 컴퓨팅 성능에 대한 접근성을 높이고 모든 사람이 이해할 수 있는 균일한 방식으로 시스템을 계속 실행할 수 있도록 했다. 

SQL이 사실상의 표준이라고 언급했는데, 다른 모든 표준과 마찬가지로 SQL도 오랜 기간에 걸쳐 발전해왔다. 잘 계획하면 확장할 수 있다. 이런 발전을 보여주는 대표적인 사례는 2016년 표준의 변경을 통해 데이터베이스 벤더가 다양한 JSON 형식을 지원할 수 있도록 한 것이다. 

JSON으로 작업을 하고자 했던 개발자는 오래전부터 몽고DB와 같은 문서 지향 데이터베이스를 데이터 저장소로 사용하면서 성능과 사용 편의성을 이유로 다른 데이터베이스를 보조 옵션으로 사용할 수 있었다. 지금은 그렇지 않다. 포스트그레SQL과 같은 많은 관계형 데이터베이스가 JSON 지원을 구현했고, 특정 워크로드에서 이 구현이 문서 지향 데이터베이스만큼, 또는 그 이상으로 빠르기 때문이다. 따라서 개발자는 특정 접근 방식에 묶이지 않고 자신의 애플리케이션 목표를 직접적으로 지원하는 시스템과 인프라를 더 쉽게 설계할 수 있게 됐다. 


최적화의 책임 

SQL의 또 다른 이점은 선언적 언어라는 점이다. 선언적 프로그래밍에서 개발자는 원하는 작업을 수행하기 위해 프로그램이 취할 단계를 지정하는 것이 아니라 프로그램이 해야 할 작업을 설명한다. 개발자와 데이터베이스 관점에서 쿼리가 더 쉬워진다. 전체 계산을 구성하는 작업이 아니라 달성하고자 하는 결과에 집중할 수 있기 때문이다. 사실상 SQL을 사용하면 계산을 실행하는 데 따르는 복잡성은 데이터베이스에 맡긴 채 결과를 설명하기만 하면 된다. 

모든 강력한 언어가 그렇듯이 SQL에도 비판적인 사람들이 있다. 예를 들어 흔히 거론되는 불만 사항 중 하나는 SQL 옵티마이저의 성능 개선 효과가 크지 않다는 점이다. 결과와 응답의 속도를 개선하고 싶겠지만 이런 툴의 효과는 처음에 들인 노력의 양에 따라 좌우된다. 언어 컴파일러에서도 종종 이와 비슷한 문제가 발생한다. 컴파일러는 대체로 개발자의 코드를 더 작고 더 빠른 바이너리로 잘 변환해 주지만, 가끔 실패해서 반대의 결과를 초래하기도 한다. 

좋은 결과를 달성하려면 컴파일러나 옵티마이저에 개발자의 도움이 필요하지만 이를 위한 지식은 때로는 얻기 어려울 수 있다. 스파이더맨의 삼촌 벤이 말했듯이 큰 힘에는 큰 책임이 따른다. 전적으로 툴에 의존해서 개선을 모색하기보다는 개발자 자신의 SQL 접근 방식을 최대한 최적화해야 한다. 

SQL에 대한 또 다른 일반적인 비판은 관계형 데이터베이스와의 긴밀한 관계에 대한 것이다. 전통적인 데이터베이스 설계에 깊게 뿌리를 둔 언어가 어떻게 현대의 환경에 맞을 수 있을까? 물론 SQL과 관계형 데이터베이스의 조합은 지금도 계속해서 수많은 사용례를 지원하고 애플리케이션 요구사항을 충족할 수 있는 확장성과 성능을 제공한다. 어려운 부분은 SQL의 장점에 대한 이해를 바탕으로 접근 방식을 설계하는 것이다. 


현대 개발자의 요구사항 충족 

소프트웨어에 대한 수요와 소프트웨어 개발 속도, 개발자 수가 증가하면서 나타난 SQL의 문제는 이론적인 관점에서 SQL이 어떻게 작동하는지를 심층적으로 이해하는 개발자가 적다는 것이다. 데브옵스, 사이트 안정성 엔지니어링 등의 트렌드는 IT 서비스에 대한 비즈니스의 요구를 충족하는 데 집중하지만, 여기에 관련된 역할은 특정 기능이 아니라 IT 스택의 여러 부분을 포괄하는 경향이 있다. 

이런 툴은 이론적으로는 전체 시스템에 초점을 두지만 비즈니스 로직, 또는 고객이 달성하고자 하는 것과 인프라의 복잡다단한 부분을 어떻게 정렬시킬지에 관한 초점은 충분하지 않다. 이것이 왜 중요할까? 데이터베이스 아키텍처는 기능적 요구사항을 충족해야 할 뿐만 아니라 성능, 확장성, 보안 목표에도 부합해야 하기 때문이다. 2가지 모두를 갖추지 않으면 성공적인 소프트웨어 개발을 위한 견고한 기반도 없다. 

애플리케이션이 방대한 규모로 확장되기 시작하거나 성능 문제가 나타나면 SQL의 동작 방식을 알고 있다는 것이 큰 도움이 된다. 동일한 테이블에서 여러 번 데이터를 파싱하는 대신 더 큰 테이블에서 데이터를 골라내는 방법과 같은 쿼리 설계에 대한 이해가 성능에 큰 영향을 미칠 수 있다. 이런 데이터 관리 기술은 데이터베이스 이론에 대한 이해에 기초한다. 실제로 이해하고 배포하기 위해서는 시간이 필요하지만 더 나은 결과를 제공하기 위해서는 이 과정이 필수적이다. 

어느 언어든 배우기 어렵고 시간도 걸린다. 대부분 개발자에게는 분야를 파고들어 지식을 얻고 그 지식을 언어와 애플리케이션 전반에 적용할 만한 시간이 없다. 지식의 부재는 성능 저하와 같은 문제로 이어지고, 시간이 지나면서 이 문제는 효과적으로 진단하고 대처하기가 더 어렵게 된다. 잘 맞지 않는 종류의 데이터베이스를 배포하면 프로젝트 성공에도 지장을 초래할 수 있다. 특정 사용례에 효과적인 데이터베이스가 있어도 해당 데이터베이스가 모든 사례에 적합하지는 않을 것이다. SQL은 이와 같은 요구사항을 더 쉽게 추상화해서 기반 인프라에서 빼낼 수 있게 해준다. 데이터베이스 선택에서 실수하는 경우에도 SQL 덕분에 더 나은 옵션으로 더 쉽게 전환할 수 있다. 

SQL은 많은 사용자에게 여전히 인기 있으며, 앞으로도 인기를 유지할 것이다. 데이터를 다루는 방법에 관한 여러 중대한 과제를 해결해주기 때문이다. 악명에 겁을 먹을 수도 있지만 엄청나게 많은 정보 기술이 매일 SQL에 의존해 개발자에게 가치를 제공한다는 사실에는 변함이 없다. 앞으로도 오랫동안 개발자들은 SQL을 선택(SELECT)하고 SQL에서 가치를 창출(CREATE)할 것이다.
editor@itworld.co.kr
Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.