기존 웹프로젝트에 Swagger Framework을 사용하려면 프레임웍 패키지를 다운받아 설치하고 Swagger 실행을 위한 몇몇의 Config 셋팅을 하는 수고를 했어야 했다. 그런데 Azure에서 제공하는 Azure API APP Service 프로젝트를 생성하면 기본 셋팅으로 Swagger Framework이 설치 및 기본 셋팅이 되어 있는 것을 NuGet 패키지 관리자에 들어가 보면 다음과 같이 확인 할 수 있다.
기본 설치가 되어 있기 때문에 별다른 걱정 없이 바로 쓰기만 하면 된다. 정말인지 확인하기 위해서 새프로젝트를 만든뒤 바로 실행 해보자.
!?!? 권한이 없단다. 이런 403.14 페이지를 보는 이유는 API는 Application Programming Interface이기 때문에 UI(User Interface)가 없기 때문이다. 그렇다면 어떻게 API에 대한 정보를 볼 수 있을 것인가? 이럴때 Swagger가 제 역할을 한다.
그림에서 보면 알 수 있듯이 Swagger.UI에서 제공하는 정보들은 개발된 API에 대한 스팩 문서들이다. 이 문서들은 API 스팩 문서로 별도의 문서를 작성하지 않아도 개발자가 개발하면서 주석으로 정의해 놓은(Swagger 문법?에 따라서) 것들을 Swagger.UI를 통해서 단번에 확인 할 수 있다.
프로젝트에서 API를 호출하고 나서 결과를 읽어 Model(Object)에 담을때 다음과 같이 코드를 한다.
그런데 간혹 잘 코딩 했다고 생각을 했어도 다음과 같은 오류 메시지가 나올 때가 있다.
오류 CS1061 ‘HttpContent’에는 ‘ReadAsAsync’에 대한 정의가 포함되어 있지 않고, ‘HttpContent’ 형식의 첫 번째 인수를 허용하는 확장 메서드 ‘ReadAsAsync’이(가) 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.
이런경우 참조 패키지가 잘 준비되지 않은 경우이다. 먼저 NuGet Package에 들어가서 System.Net.Http 버전을 최신버전으로 업데이트 하고,bMicrosoft.AspNet.WebApi.Client 패키지가 설치 되어 있는지 확인 해본다. 아마 안되어 있거나 구 번전일 것이다.
Visual Studio Code(이하 VSCode)는 MS에서 제공하는 간단한 코드 편집기로 기존의 Visual Studio(이하 VS)에서 하던 컴파일 기능이나 프로젝트 구성등의 기능은 없지만 Javascript나 Typescript 등 스크립트 언어를 편집하기에 최적화되어 있는 코드 편집기다.
개인적인 생각으로는 Azure에서 사용하는 JSON 기반의 Template 코드들을 쉽게 저작할 수 있는 기능을 서버 관리자에게 제공하고 싶어서 나온게 아닐까 생각한다. 아무래도 서버관리자가 기존의 VS를 사용하기에는 너무 무거운 시스템이라 시스템 자원 운용에 필요하는 스크립트 코드나 Template 코드를 관리하기에는 고비용이기에 다른 편기기 툴(Vim, Edit+, 메모장 등)들을 사용하고 있었기 때문이다.
VSCode에서 프로그래밍 코드를 편집할 수 있게 되면서, 자연스럽게 Visual Studio Team Service(이하 VSTS)로 형상 관리를 할 수 있게 되었는데, 그 방법은 간단하다.
좌측 세로로 나와있는 메뉴바에서 위에서 3번째 Source Control 메뉴를 클릭하면 Source Control 패널이 나오는데 처음에는 아무것도 없으므로 상단에 (…) 모양의 버튼을 클릭하면 SCM Provider 추가하기 메뉴가 나와서 VSTS를 확장 설치할 수 있도록 도와준다.
간단히 Install 버튼을 누르고 나면 수초내에 확장 설치가 완료될 것이다. 그리고 Reload 버튼을 눌러서 VSCode를 재시작 해주면 VSTS를 사용할 확장설치는 완료 된다.
이제 VSTS에서 관리하는 Repository와 연결하기 위한 설정을 해야한다. 좌측 하단의 톱니바퀴 보양의 아이콘을 클릭하면 설정(Setting)메뉴를 볼 수 있다. 설정 메뉴에 들어가면 사용자 설정(User Settings)라는 환경설정 파일을 볼수 가 있는데 검색 창에 ‘location‘이라고 검색하여 tfvc.loation 변수를 찾아 TF.exe 파일의 경로를 설정해 준다.
여기서 유의해야 할 점은 VS버전마다 TF.exe위치가 다를 수 있다. 여기서는 Enterprise 버전을 사용하였으며, 경로는 값은 ‘C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\TF.exe‘ 이다.
이러면 Team Foundation Source Control을 실행할 상태가 되며, 다음으로는 local PC위치를 지정하여VSTS의 소스를 로컬에 저장할 공간을 선택한다.
셋팅이 완료 되면 다시 좌측 하단의 톱니바퀴를 클릭한다. 그러면 명령 팔레트(Command Palette)메뉴를 볼 수 있다. 명령 팔레트를 클릭하면 상단의 명령콘솔이 나오는데 VSTS에 로그인 하기위해 Team: Signin을 선택(Typing)한다. 그러면 VSTS에 접근할 수 있는 접근 토큰(Access Token)을 입력하는 곳이 나오는데 토큰을 입력하고 Sync를 수행하면 VSTS의 저장소에 있는 파일들을 로컬로 다운로드 한다.
싱크가 완료되면, VSCode와 VSTS가 연결이 완료된 것이다. 이제, VSCode에서도 프로그래밍 코드에 대한 형상 관리를 하면서 사용하면 된다.
-유의사항- TF.exe 경로를 설정할때, 아래와 같은 오류 메시지가 보이는 경우가 있다. (team) It appears you have configured a non-English version of the TF executable. Please ensure an English version is properly configured.
이것은 VSTS가 아직까지 다국어를 완벽하게 제공하는 것이 아니라 발생하는 것으로, 윈도우 언어 설정을 영문으로 변경하면 바로 해결된다. (앞으로 업데이트 될 것으로 생각된다.)
1998년 카를로 스트로찌(Carlo Strozzi)라는 엔지니어가 공개한 표준 SQL 인터페이스를 채용하지 않은 자신의 경량 Open Source 관계형 데이터베이스를 No-SQL이라고 명명한데서 유래되었다고 한며, 이후 2009년에는 요한 오스칼손(Johan Oskarsson)이라는 엔지니어가 Open Source기반의 분산 데이터베이스 관련 행사를 준비하면서 No-SQL이라는 용어를 널리 사용하기 시작하였다고 한다.
초기 No-SQL은 기존의 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomicity, Consistency, Isolation, Durability) 특성을 제공하지 않았다. 때문에 No-SQL이 등장한 이후에도 시장에서는 관계형 데이터베이스가 데이터를 처리하는데 가장 최적의 시스템으로 받아들여졌다.
기업 데이터의 정확한 처리가 필수적이기 때문에 기업 시스템에서는 현재도 관계형 데이터베이스를 훨씬 많이 사용한다. 무엇보다도 표준 SQL 이라고 하는 데이터를 처리하는 언어의 편이성 때문에 No-SQL 등 다른 데이터베이스 시스템들은 많이 활용 되지 않았다.
2000년 후반으로 넘어오면서 인터넷이 활성화되고, 소셜네트워크 서비스(SNS)등이 등장하면서 관계형 데이터 또는 정형데이터가 아닌 데이터, 즉 비정형데이터라는 것을 보다 쉽게 담아서 저장하고 처리할 수 있는 구조를 가진 데이터 베이스들이 관심을 받게 되었고, 해당 기술이 점점 더 발전하게 되면서, No-SQL 데이터베이스가 각광을 받기 시작했다.
기존의 관계형 데이터베이스 보다 더 융통성 있는 데이터 모델이 요구되며, 데이터의 저장 및 검색을 위한 특화된 매커니즘이 필요 해지기 시작했고, No-SQL은 단순 검색 및 추가 작업에 있어서 매우 최적화된 키 값 저장 기법을 사용하여, 응답속도나, 처리 효율 등에 있어서 매우 뛰어난 성능을 내주면서, 비정형 데이터를 다루는 SNS, 머신러닝 등 AI 산업에 많이 사용되기 시작했다.
SQL VS No-SQL
SQL
VS
No-SQL
정해진 규격에 의한 정적 정의
Schema
정해진 규격 없음. 동적 정의
가능
Data Join
불가능
표준
SQL
비표준
보장
Transcation
미보장
어려움
Distribute
쉬움
No-SQL 종류
1. Key-Value DB
Key와 Value의 쌍으로 데이터가 저장되는 가장 단순한 형태이다. (ex) Dictionary, Hash 자료 구조
데이터를 하나의 불투명한 컬렉션으로 처리하며 각 레코드마다 각기 다른 필드를 가질 수 있는 Column Family 데이터 모델이다.
선택적인 값들이 대부분의 DB에서처럼 placeholder로 표현되지 않기 때문에 Key-Value DB는 동일한 데이터베이스 저장을 위해 메모리를 훨씬 덜 사용하기도 하므로 특정한 부하에서 큰 성능 상의 이점이 있을 수 있다.
2. Wide Column DB
Key-Value DB에서 발전된 형태의 Column Family 데이터 모델을 사용한다.
하나의 Row Key 안에 다양한 컬럼과 값을 저장 할 수 있도록 한다.
대량의 데이터의 압축, 분산처리, 집계 쿼리 (SUM, COUNT, AVG 등)및 쿼리 동작 속도 그리고 확장성이 뛰어나다.
3. Document(-oriented) DB
문서 데이터베이스는 JSON/XML 유사 형식의 문서로 데이터를 저장 및 쿼리하도록 설계된 비관계형 데이터베이스 유형으로 트리형 구조로 레코드를 저장하거나 검색하는 것에 효과적이다.
4. Graph DB
18세기 오일러의 그래프 이론에서 시작되었다.
데이터를 노드로 표현하며 노드 사이의 관계를 엣지로 표현한다.
기존의 RDB로는 표현하기 어려웠던 각 데이터간의 연결점들을 이어주고 표현(Visualizing)해주는데 용이하다.