맨위로가기

트위스티드 (소프트웨어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

트위스티드(Twisted)는 파이썬으로 작성된 이벤트 기반의 네트워크 프로그래밍 프레임워크이다. 프로토콜과 전송 계층을 분리하여 설계되었으며, 비동기 프로그래밍을 위한 지연 객체(Deferred) 개념을 핵심으로 사용한다. 스레드 지원 및 외부 이벤트 루프와의 통합을 통해 다양한 환경에서 활용될 수 있으며, BuildBot, ITA 소프트웨어, SageMath, Twitch 등 여러 애플리케이션에서 사용된다. 또한, 웹 애플리케이션 프레임워크인 Nevow와 Athena를 포함한다.

더 읽어볼만한 페이지

  • 네트워크 소프트웨어 - CFosSpeed
    cFosSpeed는 인터넷 연결 속도 조절 프로그램으로, 트래픽 우선순위 설정 및 대역폭 제한 기능을 통해 쾌적한 인터넷 환경을 제공하지만, 호환성, 오류, 보안 등의 잠재적 문제점도 가진다.
  • 네트워크 소프트웨어 - 콘술 (소프트웨어)
    콘술은 클라우드 환경에서 서비스 디스커버리, 서비스 메시, 키-값 저장소 기능을 제공하여 IT 시스템 운영 효율성을 높이는 오픈 소스 기반의 분산 시스템 관리 도구이다.
  • 파이썬 소프트웨어 - 패키지킷
    패키지킷은 다양한 리눅스 배포판에서 패키지 설치, 업데이트 및 관리를 단순화하기 위해 서로 다른 패키지 관리 시스템을 통합하여 일관된 인터페이스를 제공하는 시스템이다.
  • 파이썬 소프트웨어 - PyPy
    PyPy는 파이썬의 호환 가능하고 빠른 구현을 목표로 하는 동적 언어 구현 프레임워크이며, RPython을 사용하여 JIT 컴파일러를 생성하고, Python 2.7과 3.10 버전을 지원한다.
  • 파이썬으로 작성된 자유 소프트웨어 - 캘리버
    캘리버는 다양한 전자책 파일 형식과 단말기를 지원하는 오픈소스 소프트웨어로, 편집, 변환, 메타데이터 관리, 라이브러리 검색, 온라인 콘텐츠 수집, 원격 액세스, 전자책 제작 등의 기능을 제공하며, 플러그인을 통해 DRM 제거도 가능하다.
  • 파이썬으로 작성된 자유 소프트웨어 - 클램윈
    클램윈은 ClamAV 엔진 기반의 오픈 소스 백신 소프트웨어로, 트로이 목마, 바이러스, 멀웨어 등 다양한 악성 위협 분석 자료를 제공하며 예약 검사, 수동 검사, 컨텍스트 메뉴 통합 등의 기능을 지원하지만 실시간 감시 기능은 제공하지 않는다.
트위스티드 (소프트웨어) - [IT 관련 정보]에 관한 문서
개요
트위스티드 로고
트위스티드 로고
종류이벤트 구동 네트워킹 프레임워크
개발자커뮤니티
최초 릴리스2002년 10월 22일
프로그래밍 언어파이썬
라이선스MIT 라이선스
웹사이트트위스티드 공식 웹사이트
상세 정보
작성자Glyph Lefkowitz

2. 핵심 개념

2. 1. 프로토콜과 전송의 분리

트위스티드는 논리적인 프로토콜(일반적으로 HTTP 또는 POP3와 같이 스트림 기반 연결 의미 체계를 사용)과 이러한 스트림 기반 의미 체계를 지원하는 전송 계층(파일, 소켓 또는 SSL 라이브러리 등) 간의 완전한 분리를 위해 설계되었다. 논리적인 프로토콜과 전송 계층 간의 연결은 가능한 마지막 순간, 즉 정보가 논리적인 프로토콜 인스턴스로 전달되기 직전에 발생한다. 논리적인 프로토콜은 전송 계층 인스턴스에 대한 정보를 받으며, 이를 사용하여 메시지를 다시 보내고 상대방의 신원을 확인할 수 있다. 프로토콜 코드에서 전송 문제(예: 클라이언트 측 SSL 인증서 확인)에 대해 전송 계층을 심층적으로 쿼리하는 것이 여전히 가능하다. 물론, 이러한 프로토콜 코드는 전송 계층이 이러한 의미 체계를 지원하지 않으면 실패한다(예외 발생).

2. 2. 지연 객체(Deferred)

트위스티드 애플리케이션 모델의 핵심은 지연 객체(Deferred) (퓨처라고도 함)의 개념이다. 이는 아직 계산되지 않은 결과를 받고 처리하도록 설계된 클래스의 인스턴스이다. 예를 들어 원격 피어의 데이터를 기반으로 하는 경우가 이에 해당한다. Deferred는 일반 객체처럼 전달될 수 있지만, 그 값을 바로 요청할 수는 없다.

각 Deferred는 콜백 체인을 지원한다. Deferred가 값을 얻으면 콜백 체인의 함수에 전달되며, 각 콜백의 결과는 다음 콜백의 입력이 된다. Deferred를 사용하면 함수의 값이 사용 가능해지기 전에 함수의 결과에 대해 작업을 수행할 수 있다.

예를 들어, Deferred가 원격 피어로부터 쿼드 형식의 IP 주소를 포함하는 문자열을 반환하는 경우, 이를 32비트 숫자로 변환하는 콜백을 연결할 수 있다. 그러면 Deferred를 사용하는 쪽에서는 이를 32비트 숫자를 반환하는 Deferred로 취급할 수 있다. 이러한 기능과 "errback"(오류 처리기로 호출되는 콜백)을 정의하는 관련 기능을 통해, 코드는 비동기 이벤트가 발생했을 때 수행할 작업을 이벤트 대기를 멈추지 않고 미리 지정할 수 있다. 스레드를 사용하는 것과 같은 비 이벤트 기반 시스템에서는 운영 체제가 블로킹 호출이 발생할 때마다 스레드를 구성하는 데 불필요한 추가 오버헤드를 발생시킨다.

2. 3. 스레드 지원

트위스티드는 스레드를 Deferred의 입력으로 사용하여 일반적인 스레드에 대한 추상화를 지원한다. 즉, Deferred는 즉시 제어를 반환하고, 스레드가 종료될 때 값을 받는다. 메인 스레드에서 실행되는 콜백을 정의할 수 있으며, 이를 통해 복잡한 잠금 처리의 필요성을 줄인다.

데이터베이스 호출과 같이 시간이 오래 걸리는 작업은 외부 스레드에서 처리되지만, 결과 분석은 메인 스레드에서 수행된다.

2. 4. 외부 이벤트 루프와의 통합

트위스티드는 GTK+, Qt, Cocoa (PyObjC를 통해) 등과 같은 외부 이벤트 루프와 통합될 수 있다. 이를 통해 그래픽 사용자 인터페이스(GUI) 프로그램에서 소켓당 스레드 오버헤드를 추가하지 않고도 파이썬의 기본 라이브러리를 사용하는 것과 같이 트위스티드를 네트워크 계층으로 사용할 수 있다. 예를 들어, 이 모델을 사용하여 완전한 기능을 갖춘 웹 서버를 GUI 프로그램과 프로세스 내에서 통합할 수 있다.

3. Twisted를 사용하는 애플리케이션

BuildBot 연속 통합 시스템은 클라이언트/서버 통신에 Twisted를 사용한다. ITA 소프트웨어는 에어 캐나다를 위해 Twisted를 광범위하게 사용하는 항공 예약 시스템을 개발했다. SageMath는 Mathematica, Maple, Magma, MATLAB의 오픈 소스 대안으로, Twisted 서버에서 실행되는 웹 기반 인터페이스인 SageMath 노트북을 갖추고 있다. Omegle 일대일 채팅 서비스는 성능상의 이유로 gevent로 대체되기 전까지 Twisted를 사용했다. 애플 캘린더 서버는 Twisted를 사용하며, NASA의 일부 내부 프로젝트에서도 사용된다. Conch는 Secure Shell (SSH) 프로토콜의 구현체이다. 소셜 네트워킹 및 마이크로블로깅 사이트 Jaiku의 초기 버전은 Twisted를 사용했다. Fluidinfo는 온라인 클라우드 데이터 저장소로, 내부 RPC(부분적으로 Thrift 및 AMQP와 결합), 내부 서비스 및 외부 API에 Twisted를 광범위하게 사용한다. 파일 호스팅 서비스 Ubuntu One은 Twisted를 사용했다. Tor2web는 Tor 숨겨진 서비스(HS)의 HTTP 프록시로 Twisted를 사용한다. GlobaLeaks는 오픈 소스 내부 고발 프레임워크로 Twisted를 사용한다. Cloudkick는 클라우드 서버 관리 웹 애플리케이션으로 Twisted를 사용했다. 현재는 Node.js를 사용하여 다시 작성되었다. Twilio는 클라우드 통신 제공 업체로 Twisted를 사용한다. 비디오 게임 방송 및 채팅 커뮤니티 Twitch는 Twisted를 사용한다. 기상 데이터 처리 및 통합 API인 Velocity Weather는 Twisted를 기반으로 구축되었다. qwebirc는 웹 기반 IRC 클라이언트로 Twisted를 사용한다. Zenoss Core는 네트워크 관리 플랫폼으로, 많은 내부 및 수집 데몬에 Twisted를 사용한다. Scrapy는 Twisted를 기반으로 하는 웹 크롤러이다. Listen to Wikipedia는 위키백과 오디오-비주얼라이저로, 실시간 편집 이벤트를 브라우저에 방송하기 위해 Twisted를 사용한다. Tahoe-LAFS는 분산 데이터 저장소 및 분산 파일 시스템이다. Deluge는 고도로 모듈화된 BitTorrent 클라이언트로 Twisted를 사용한다. Magic Wormhole은 PAKE를 사용하여 안전한 파일 전송 도구이다.

3. 1. 주요 애플리케이션

트위스티드(Twisted)는 다양한 분야의 애플리케이션 개발에 사용되고 있다.

  • BuildBot 지속적 통합 시스템은 클라이언트/서버 통신에 Twisted를 사용한다.
  • ITA 소프트웨어는 에어 캐나다를 위해 Twisted를 광범위하게 사용하는 항공 예약 시스템을 개발했다.[26]
  • SageMath는 Mathematica, Maple, Magma, MATLAB의 오픈 소스 대안으로, Twisted 서버에서 실행되는 웹 기반 인터페이스인 SageMath 노트북을 갖추고 있다.
  • Omegle 일대일 채팅 서비스는 성능상의 이유로 gevent로 대체되기 전까지 Twisted를 사용했다.
  • 애플 캘린더 서버는 Twisted를 사용하며, NASA의 일부 내부 프로젝트에서도 사용된다.
  • Conch는 Secure Shell (SSH) 프로토콜의 구현체이다.
  • 소셜 네트워킹 및 마이크로블로깅 사이트 Jaiku의 초기 버전은 Twisted를 사용했다.[26]
  • Fluidinfo는 온라인 클라우드 데이터 저장소로, 내부 RPC, 내부 서비스 및 외부 API에 Twisted를 광범위하게 사용한다.
  • 파일 호스팅 서비스 Ubuntu One은 Twisted를 사용했다.
  • Tor2web는 Tor 숨겨진 서비스(HS)의 HTTP 프록시로 Twisted를 사용한다.
  • GlobaLeaks는 오픈 소스 내부 고발 프레임워크로 Twisted를 사용한다.
  • Cloudkick는 클라우드 서버 관리 웹 애플리케이션으로 Twisted를 사용했다. 현재는 Node.js를 사용하여 다시 작성되었다.
  • Twilio는 클라우드 통신 제공 업체로 Twisted를 사용한다.
  • 비디오 게임 방송 및 채팅 커뮤니티 Twitch는 Twisted를 사용한다.
  • 기상 데이터 처리 및 통합 API인 Velocity Weather는 Twisted를 기반으로 구축되었다.
  • qwebirc는 웹 기반 IRC 클라이언트로 Twisted를 사용한다.
  • Zenoss Core는 네트워크 관리 플랫폼으로, 많은 내부 및 수집 데몬에 Twisted를 사용한다.
  • Scrapy는 Twisted를 기반으로 하는 웹 크롤러이다.
  • Listen to Wikipedia는 위키백과 오디오-비주얼라이저로, 실시간 편집 이벤트를 브라우저에 방송하기 위해 Twisted를 사용한다.
  • Tahoe-LAFS는 분산 데이터 저장소 및 분산 파일 시스템이다.
  • Deluge는 고도로 모듈화된 BitTorrent 클라이언트로 Twisted를 사용한다.
  • Magic Wormhole은 PAKE를 사용하여 안전한 파일 전송 도구이다.

3. 2. Nevow

Nevow는 (프랑스어 ''nouveau''처럼 발음) 원래 Divmod사에서 개발한 파이썬 웹 애플리케이션 프레임워크이다. 템플릿 치환은 작은 태그 속성 언어를 통해 이루어지며, 이는 일반적으로 디스크의 XML 템플릿에 내장되어 있지만, 이 마크업을 프로그래밍 방식으로 표현하기 위한 순수 파이썬 도메인 특화 언어인 Stan도 있다. Nevow는 Twisted와 잘 통합된다.

Nevow는 여러 유명 웹 사이트에 배포되었으며, 가장 눈에 띄는 곳은 공식 Python 사이트이다.[18]

2010년 중반, Divmod는 사업을 중단[19]하여 Nevow 개발 작업이 거의 중단되었고, 2011년에는 홈페이지에 더 이상 접근할 수 없게 되었다.[20] Launchpad에는 Nevow 프로젝트의 소스 코드를 포함하여 Divmod의 소스 코드를 호스팅하는 프로젝트가 있다.[21][22]

3. 2. 1. Athena

Athena는 네보우(Nevow) 구성 요소로, 원격 프로시저 호출 형태의 웹 애플리케이션의 파이썬과 자바스크립트 부분 간의 양방향 비동기 통신을 용이하게 한다. 이러한 기술은 일반적으로 Ajax 또는 Comet이라고 불리지만, 네보우의 구현은 이 두 명칭보다 먼저 나왔다.[23] Athena는 또한 상속 기반의 자바스크립트 객체 시스템을 포함하며, 이는 클라이언트 측 ''위젯'' 추상화, 모듈 시스템 및 인-브라우저 단위 테스트 키트의 기초를 형성한다.

참조

[1] 간행물 Twisted 1.0 http://twistedmatrix[...] 2008-08-14
[2] 웹사이트 BuildBot Manual https://djmitche.git[...] 2017-10-28
[3] 웹사이트 Python Slithers into Systems http://www.eweek.com[...]
[4] 문서 SageMath#Features
[5] 기타 Sage a Basic Overview http://sage.math.was[...]
[6] 웹사이트 mistah deejay http://omegler.blogs[...]
[7] 웹사이트 Google Groups http://groups.google[...]
[8] 웹사이트 Calendar and Contacts Server http://www.calendars[...]
[9] 웹사이트 Twitch - Jobs http://www.twitch.tv[...]
[10] 웹사이트 Velocity Weather - http://www.velocityw[...]
[11] Citation A WebSocket-oriented monitor for Wikipedia (also, wikimon, wikital monsters) https://github.com/h[...] hatnote 2017-09-21
[12] 웹사이트 Deluge: build from source https://dev.deluge-t[...] 2020-01-08
[13] 웹사이트 Magic Wormhole https://github.com/w[...]
[14] 기타 this 2004 paper by Donovan Preston, the original author of Nevow and Formless https://www.python.o[...]
[15] 기타 Nevow: A Web Application Construction Kit http://soundfarmer.c[...] Donovan Preston
[16] 기타 Re: ANN: Twisted 1.1.0, the framework of *your* internet http://article.gmane[...] Donovan Preston 2003-10-27
[17] 웹사이트 Releases · twisted/nevow https://github.com/t[...] 2020-11-04
[18] 기타 PythonWebsitePyramidDocs https://wiki.python.[...]
[19] 기타 Goodbye, Divmod. Hello, World! http://glyph.twisted[...] Deciphering Glyph 2009-07-10
[20] 기타 Divmod Nevow commits https://www.ohloh.ne[...] Ohloh
[21] 기타 Divmod http://divmod.org
[22] 기타 Divmod https://launchpad.ne[...] Launchpad
[23] 기타 History http://divmodsphinx.[...] Divmod Nevow vtrunk documentation
[24] 웹사이트 EventMachine http://rubyeventmach[...] 2011-08-20
[25] 웹사이트 Integrating with other Frameworks — Kivy 1.11.0.dev0 documentation http://kivy.org/docs[...]
[26] URL http://www.eweek.com[...]
[27] 메일링 Twisted 1.0 http://twistedmatrix[...] 2002-10-22



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com