CSS
Framework
-
Bootstrap
-
Materialize
-
Semantic UI…
Architecture
- BEM
Pre-processor(전처리기)
- Sass, Less, Stylus
CSS 전처리기는 모듈별로 특별한 Syntax를 가지고 있고, 여기에 믹스인(mixin), 중첩 셀렉터(nesting selector), 상속 셀렉터(inheritave selector) 등 Programmatically한 요소를 접목해 방대해지는 CSS 문서의 양을 효율적으로 처리하고 관리해주는 통합적인 단어를 말한다.
이 CSS 전처리기 자체만으로는 웹 서버가 인지하지 못하기 때문에 각 CSS 전처리기에 맞는 Compiler를 사용해야 하고 컴파일을 하게 되면 실제로 우리가 사용하는 CSS 문서로 변환이 된다.
정적 타입 언어 vs 동적 타입 언어
정적 타입 언어
정적 타입 언어(Statically typed language)는 컴파일 시간에 변수의 타입이 결정됩니다.
Java, C, C++와 같은 언어들은 프로그래머가 변수의 타입을 직접 명시해 주어야합니다.
Haskell, Scala, Kotlin과 같은 언어들은 타입 추론(type inference)을 이용하여 변수의 타입을 추론합니다.
컴파일 시간에 변수의 타입을 체크하므로 사소한 버그들을 쉽게 체크할 수 있다는 장점이 있습니다.
동적 타입 언어
동적 타입 언어(Dynamically typed languages)는 런타임에 타입이 결정됩니다. 매번 타입을 써줄 필요가 없기 때문에 프로그래머가 빠르게 코드를 작성할 수 있습니다.
Perl, Ruby, Python, PHP, JavaScript 같은 언어들이 여기에 속합니다.
정적 타입 언어는 소스 코드를 보고 변수의 타입을 판단하고, 동적 타입 언어는 코드를 실행할 때 변수의 타입을 판단합니다.
GraphQL
GraphQL은 페이스북에서 만든 쿼리 언어입니다.
GraphQL은 요즘 개발자들 사이에서 자주 입에 오르내리고 있으나, 2019년 7월 기준으로 얼리스테이지(early-stage)임은 분명합니다. 국내에서 GraphQL API를 Open API로 공개한 곳은 드뭅니다. 또한, 해외의 경우 Github 사례(Github v4 GraphQL)를 찾을 수는 있지만, 전반적으로 GraphQL API를 Open API로 공개한 곳은 많지 않습니다. 하지만 등장한지 얼마되지 않았음에도 불구하고, GraphQL의 인기는 매우 가파르게 올라가고 있다는 사실을 확인할 수 있습니다.
GraphQL 이란?
Graph QL(이하 gql)은 Structed Query Language(이하 sql)와 마찬가지로 쿼리 언어입니다. 하지만 gql과 sql의 언어적 구조 차이는 매우 큽니다. 또한 gql과 sql이 실전에서 쓰이는 방식의 차이도 매우 큽니다. gql과 sql의 언어적 구조 차이가 활용 측면에서의 차이를 가져왔습니다.
sql은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적
gql은 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적
sql의 문장은 주로 백엔드 시스템에서 작성하고 호출 하는 반면, gql의 문장은 주로 클라이언트 시스템에서 작성하고 호출합니다.
서버사이드 gql 어플리케이션은 gql로 작성된 쿼리를 입력으로 받아 쿼리를 처리한 결과를 다시 클라이언트로 돌려줍니다. HTTP API 자체가 특정 데이터베이스나 플랫폼에 종속적이지 않은 것처럼 마찬가지로 gql 역시 어떠한 특정 데이터베이스나 플랫폼에 종속적이지 않습니다. 심지어 네트워크 방식에도 종속적이지 않습니다. 일반적으로 gql의 인터페이스간 송수신은 네트워크 레이어 L7의 HTTP POST 메서드와 웹소켓 프로토콜을 활용합니다. 필요에 따라서는 얼마든지 L4의 TCP/UDP를 활용하거나 심지어 L2 형식의 이더넷 프레임을 활용할 수도 있습니다.
REST API와 비교
REST API는 URL, METHOD 등을 조합하기 때문에 다양한 Endpoint가 존재합니다. 반면, gql은 단 하나의 Endpoint가 존재합니다. 또한, gql API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해서 결정합니다.
예를 들면, REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 달라지는 반면, gql API는 gql 스키마의 타입마다 데이터베이스 SQL 쿼리가 달라집니다.
위 그림처럼, gql API를 사용하면 여러번 네트워크 호출을 할 필요 없이, 한번의 네트워크 호출로 처리할 수 있습니다.
참고