인트아이 기술분석 스터디 리뷰
인트아이 기술 분석 스터디는 매주 IT기술 하나씩 정해서 해당 기술의 역사와 특징, 사용 사례를 조사하는 스터디입니다.
10월 1일: Tailwind CSS
Tailwind CSS는 버튼이나 테이블과 같은 요소에 대해 미리 정의된 일련의 클래스를 제공하지 않는 대신, 유틸리티 클래스(utility class)라고 하는 저수준 CSS 클래스를 제공하는 오픈 소스 CSS 프레임워크입니다.
여기서 유틸리티 클래스란 스타일 하나만을 지정하는 클래스를 말합니다.
개발자는 이러한 유틸리티 클래스를 조합하여 원하는 디자인을 생성할 수 있습니다.
과거에는 시멘틱한 이름을 짓는 것이 중요한 패러다임이었기 때문에 class에 유틸리한 이름을 붙여 개발하는 방식은 안티패턴의 한 부류였습니다.
하지만 Tailwind CSS는 이러한 방식을 전면적으로 권장함으로써, CSS의 구조적인 문제를 다룰 수 있는 방법으로 인정을 받고 가장 인기 있는 프레임워크가 되었습니다.
Tailwind CSS는 미리 정의된 클래스를 사용하지 않기 때문에 디자이너가 원하는 디자인을 쉽게 구현할 수 있지만,
Tailwind CSS를 처음 사용하는 경우, Utility-First 방식에 익숙해지는 데 시간이 소요될 수 있습니다.
19박승재 작성
참고자료: Tailwind CSS
참고자료: CSS 역사로 알아보는 CSS가 어려워진 이유
10월 4일: 천리안
천리안은 미디어 로그에서 운영하는 VT 기반 PC 통신 서비스입니다.
PC 통신 서비스는 개인 컴퓨터(PC)를 사용하여 인터넷에 연결하고 다양한 서비스를 이용할 수 있게 해주는 온라인 서비스입니다.
이 서비스는 초기에 모뎀(조작음방식 변조/복조기)을 통해 전화선을 통해 컴퓨터와 인터넷을 연결하였으며, 주로 1990년대 초반부터 중반까지 사용되었습니다.
한국에서 인기를 얻었던 웹 포털 사이트인 천리안은 초기 인터넷 사용 시기에 웹 1.0의 특징을 대표하는 웹사이트 중 하나였습니다.
주로 정적인 정보와 포털 기능을 제공하며, 웹 검색, 뉴스, 게임, 커뮤니티 등 다양한 서비스를 제공했습니다.
그러나 웹 2.0의 등장 이후에는 동적이고 상호작용이 풍부한 웹 애플리케이션들이 대세로 등장하면서 웹 1.0의 형태가 변화했습니다.
천리안은 점차 사용자들의 관심을 잃고, 포털 시장에서 미미한 위치로 내려가게 되었습니다.
이후 천리안은 종료되거나 다른 형태로 서비스되기도 했으나, 그 영향력은 크게 떨어졌습니다.
22김혜지 작성
10월 11일: 웹 접근성
웹 접근성은 장애를 가진 사람들이 사용할 수 있도록 웹사이트, 도구 및 기술을 디자인하고 개발하는 것을 의미합니다.
웹 접근성이 뛰어난 웹사이트들은 사용자들 간의 소통을 원활하게 하지만 현재 많은 웹사이트 및 기술들은 여러 방면에서 웹 접근성이 부족하고 이에 따라 웹을 사용하는 데 지장이 있는 사용자들의 사회적 장벽을 형성하고 있습니다.
웹 접근성은 웹사이트, 툴 및 기술이 청각, 인지, 신경학적, 신체, 언어 및 시각 장애를 포함한 웹 액세스에 영향을 미치는 모든 장애에 구애받지 않고 장애를 가진 사람들이 이를 사용할 수 있도록 디자인 및 개발되었음을 의미합니다.
개인에게 정보와 기회에 대한 평등한 접근을 제공한다는 점 등 웹의 다양한 측면에서 개인의 삶에 대한 영향력이 커짐에 따라 모든 사용자에게 평등한 접근 권한 및 혜택을 제공하기 위해 웹 접근성이 더욱 중요해졌습니다.
또한 기업에 사용자 경험과 만족도를 향상하고 시장확장을 할 수 있다는 점에서 기업에서의 중요성과 사용자들이 사회에서 도태되지 않고 사회 포용을 촉진하고 불평등을 줄인다는 점에서 사회적 중요성 또한 증가하고 있습니다.
웹 접근성은 웹 기술, 웹 브라우저, 제작 도구 및 웹사이트와 같은 여러 구성 요소가 함께 작동해야 합니다.
이를 평가하기 위해 웹사이트 개발 초기부터 접근성을 평가해야 하며 해당 접근성 여부를 식별하기 위해 웹 접근성에 대한 국제 표준, Web Content Accessibility Guidelines(WCAG) 2.0과 같은 것이 있습니다.
23김동하 작성
10월 26일: jemalloc
jemalloc은 Jason Evans가 개발한 오픈 소스 메모리 할당자입니다.
jemalloc은 기존의 malloc 구현에 비해 성능이 뛰어난데, 특히 멀티 스레드 환경에서 성능 향상이 두드러집니다.
jemalloc의 주요 기능은 다음과 같습니다.
-
arena: jemalloc은 메모리를 arena라는 작은 단위로 나눕니다.
각 arena는 독립적으로 관리되므로, 하나의 arena에서 발생한 문제가 다른 arena에 영향을 미치지 않습니다.
이것은 멀티스레드 환경에서 성능을 향상시키는 데 도움이 됩니다.
-
thread cache: jemalloc은 각 스레드에 대해 thread cache를 제공합니다.
thread cache는 스레드가 자주 사용하는 메모리를 저장하기 때문에 메모리를 다시 할당해야 하는 횟수를 줄여 성능을 향상시킬 수 있습니다.
-
adaptive mutex: adaptive mutex는 스레드의 활동 수준에 따라 잠금을 획득하는 방법을 조정합니다.
스레드가 활동적이지 않은 경우, spin lock을 사용하여 잠금을 획득합니다.
spin lock은 매우 빠르지만, 스레드가 잠금을 얻기 위해 무한히 기다리는 것을 방지하기 위해 적절한 시간 제한을 설정해야 합니다.
스레드가 활동적인 경우, mutex를 사용하여 잠금을 획득합니다.
mutex는 spin lock보다 느리지만, 스레드가 잠금을 얻지 못할 경우, 다른 스레드가 잠금을 해제할 때까지 대기할 수 있습니다.
-
tagging: jemalloc은 메모리에 태그를 지정할 수 있습니다.
태그를 지정하면 메모리 할당 추적하거나, 메모리 블록을 특정 목적으로 사용하도록 제한하고 각 메모리 블록을 분류할 수 있습니다.
19박승재 작성
참고자료: 마지막 남은 공짜 점심. Facebook의 메모리 할당자 jemalloc
11월 2일: 대칭키 암호 방식
대칭키 암호는 데이터를 암호화하고 해독하기 위해 동일한 키를 사용하는 방식입니다.
이 방법에서 암호화된 데이터는 특정 키를 이용하여 암호화되며, 동일한 키를 사용하여 다시 원래의 데이터로 해독됩니다.
키가 암호화 및 복호화에 사용되기 때문에, 키의 안전한 관리가 중요합니다.
대칭키 암호화는 전송 중인 데이터의 기밀성을 보장하는 데 사용되며, 암호화된 데이터는 알고 있는 키만 있으면 해독될 수 있습니다.
대칭키 암호 방식은 키의 안전한 교환과 관리에 관한 어려움이 있습니다.
키를 안전하게 공유하는 것이 중요한데, 이러한 키 분배는 보안 위협에 취약할 수 있으며, 공유된 키가 유출될 경우 데이터가 쉽게 노출될 수 있습니다.
또한 대규모 통신에서 많은 키를 관리하는 것이 복잡해질 수 있습니다. 이로 인해 대칭키 방식의 안전성과 확장성에 제약이 생기게 됩니다.
이러한 문제를 해결하기 위해 공개키 암호화 방식이 제안되었습니다.
공개키 암호화는 대칭키 방식의 문제를 해결하기 위해 고안되었는데, 이는 공개키와 비밀키를 사용하여 암호화와 복호화를 수행합니다.
공개키는 누구나 알 수 있지만 비밀키는 소유자만이 가지고 있기 때문에 키 분배와 관리에 대한 공개키 방식의 취약점을 줄일 수 있습니다.
22김혜지 작성
11월 8일: Vite
Vite는 2020년 Evan You가 만든 프론트엔드 개발 환경을 위한 빌드 도구입니다.
Vue.js의 개발자인 Evan You는 Vue.js의 개발 경험을 바탕으로 Vite를 만들었습니다.
Vite는 프론트엔드 개발 환경을 개선하기 위한 새로운 도구로 주목받고 있습니다.
- 즉시 시작되는 서버: Vite는 ESM(ECMAScript Modules)을 사용하여 번들링 없이 파일을 제공하기 때문에, 개발 서버를 빠르게 시작할 있습니다.
- 빠른 HMR(Hot Module Replacement): Vite는 HMR을 사용하여 코드 변경 사항을 즉시 웹 브라우저에 반영합니다. 따라서 코드를 수정할 때마다 웹 앱을 다시 빌드할 필요가 없습니다.
- 풍부한 기능: Vite는 TypeScript, JSX, Vue.js, React, Svelte 등 다양한 프레임워크와 기술을 지원합니다. 또한, 다양한 플러그인을 통해 기능을 확장할 수 있습니다.
Vite는 다양한 프론트엔드 개발 프로젝트에 사용할 수 있습니다.
- 빠른 개발 속도를 요구하는 프로젝트: Vite는 즉시 시작되는 서버와 빠른 HMR을 통해 개발 속도를 크게 향상시킵니다.
- 프레임워크의 기본 기능을 최대한 활용하고 싶은 프로젝트: Vite는 프레임워크의 기본 기능을 더욱 빠르고 효율적으로 사용할 수 있도록 지원합니다.
- 라이브러리 개발을 하고 싶은 프로젝트: Vite를 사용하면 라이브러리를 빠르고 쉽게 개발하고 테스트할 수 있습니다.
- SPA를 개발하고 싶은 프로젝트: Vite를 사용하면 SPA를 빠르고 효율적으로 개발할 수 있습니다.
19박승재 작성
11월 9일: 하드웨어 보안 모듈
하드웨어 보안 모듈(HSM)은 주로 컴퓨터나 다른 디지털 장치의 데이터와 시스템을 보호하기 위해 사용되는 하드웨어 기반의 보안 장치입니다.
HSM은 안전한 키 저장, 암호화, 서명, 인증, 키 관리, 무결성 검사 및 다양한 보안 기능을 수행해 신뢰할 수 있는 환경을 제공합니다.
사용 유형은 하드웨어 내장형과 이동식 및 Cloud 서비스형으로 구분할 수 있습니다.
그러나 모듈의 처리 성능이 네트워크의 대역폭과 트래픽 증가에 비해 뒤처질 수 있습니다.
이는 성능 문제를 야기합니다.
또 특정 보안 기능에만 중점을 두는 모듈의 경우에는 기능이 한정되어있다는 단점을 가집니다.
이를 해결하기 위해서 ‘통합된 솔루션을 구현하자‘는 의견과 ‘성능 및 대역폭 문제를 해결하기 위해 더 높은 처리량을 제공하는 고성능 네트워크 보안 하드웨어 모듈을 도입하자‘는 의견 등 다양한 목소리가 나오고 있습니다.
22김혜지 작성
11월 15일: Elixir
엘릭서(Elixir)는 2012년에 José Valim이 개발한 함수형 프로그래밍 언어입니다.
함수형 프로그래밍은 상태를 사용하지 않고, 함수의 입력과 출력만을 사용하여 프로그램을 작성하는 방식입니다.
얼랭 가상 머신(BEAM)에서 실행되며, 얼랭의 안정성과 확장성, 그리고 동시성을 유지하면서도 생산성을 향상시킨 것이 특징입니다.
BEAM은 안정성과 확장성이 뛰어난 가상 머신으로, 통신 시스템, 금융 시스템 등에서 널리 사용되고 있습니다.
BEAM은 분산 처리를 지원하므로, 엘릭서 프로그램을 수백, 수천 개의 프로세스로 확장할 수 있습니다.
예를 들어, WhatsApp, Slack, Discord 등은 엘릭서를 사용하여 개발되었습니다.
19박승재 작성
참고자료: Elixir School
11월 16일: RSA
RSA 암호화 알고리즘은 SSL/TLS에서 가장 많이 사용되는 공개키 암호화 알고리즘입니다.
1977년에 Ron Rivest, Adi Shamir, Leonard Adleman에 의해 개발되었습니다.
공개키와 개인키가 한 쌍을 이루며, 공개키로 암호화한 내용은 개인키로만, 개인키로 암호화한 내용은 공개키로만 해독할 수 있습니다.
이 알고리즘은 큰 수를 소인수분해하는 어려움에 기반한 기술입니다.
RSA는 키의 안전성을 높이고 관리를 용이하게 만드는 구조를 가지고 있습니다.
뛰어난 보안성으로 다양한 분야에 사용됩니다.
가령, 공개키 기반의 암호화 및 디지털 서명, 안전한 통신과 데이터 무결성을 유지 등에 기여합니다.
키 교환 프로토콜에서도 주로 사용되는데, 두 사용자 간의 안전한 통신을 위해 활용됩니다.
그러나 키의 길이에 따라 알고리즘의 안전성이 크게 변할 수 있으며, 키 교환 및 암호화 작업이 대칭키에 비해 상대적으로 느리다는 단점을 지니고 있습니다.
또한 구현 방법에 따라 부채널 공격의 일종인 Timing Attack에 취약할 수 있습니다.
이러한 단점을 보완하고 다양한 상황에 대응하기 위해 ECC(Elliptic Curve Cryptography), Post-Quantum Cryptography, Hybrid Cryptography 기술들이 개발되고 있습니다.
22김혜지 작성