인디오홀덤_모바일게임 Phil Hellmuth가 World Series of Poker(WSOP) 의 GOAT라는 데 이의를 제기하는 사람은 거의 없을 것입니다 . 하지만 Bryn Kenney는 “Poker Brat”이 포커 플레이어로서 전반적으로 그렇게 훌륭하다고 생각하지 않습니다.
인디오홀덤_모바일게임 The Hendon Mob에 따르면 라이브 토너먼트 캐시 기록이 6,700만 달러인 Kenney는 Sean Kelly와 함께 Digital Social Hour Podcast 에 출연했습니다 . 뉴욕 포커 프로는 350만 달러 손실, 포커 세계의 드라마, 포커 명예의 전당 등 여러 주제를 다루었습니다.
그는 인디오홀덤_모바일게임 또한 100만 명 이상의 팔로워를 보유한 진행자로부터 포커계에서 헬무트의 위상에 대한 질문을 받았습니다. 그리고 그 답변은 포커 역사상 가장 인기 있는 선수 중 한 명을 자극할 것입니다.
케니 디스 포커 레전드 브린 케니 필 헬무스 포커브린 케니 Hellmuth는 17개의 WSOP 브레이슬릿으로 기록을 보유하고 있습니다. Phil Ivey 는 11개로 2위에 있으며, Johnny Chan , Erik Seidel , Doyle Brunson 만이 두 자릿수에 도달했습니다. 하지만 Digital Social Hour Podcast 의 게스트는 그다지 감명받지 않은 듯합니다.
“많은 사람들이 인디오홀덤_모바일게임 헬무트를 ‘토너먼트 GOAT’라고 부르지만, 저는 당신의 의견을 듣고 싶습니다. 그는 당신처럼 더 높은 스테이크 토너먼트에서 뛰지 않으니까요.” 켈리가 말했다.
케니는 헬무트가 “WSOP에서 가장 많이 우승한 플레이어”라고 처음 언급했는데, 헬무트가 WSOP 브레이슬릿과 파이널 테이블 진출 기록을 큰 차이로 보유하고 있다는 점을 감안하면 이 주장에 반박하기 어렵다.
케니는 인디오홀덤_모바일게임 헬무트의 WSOP 성과에 대해 “그는 인상적인 경력을 가지고 있다”고 말했다.
하지만 칭찬은 거기서 끝났다. 그는 1989년 세계 챔피언의 최고 스테이크에서의 성과를 공격했다.
“그는 하이롤러들과 몇 번 경기를 했지만 그다지 좋은 성적을 거두지 못했어요. 포커에서 가장 뛰어난 선수가 누구인지 생각해보면, 최고 수준에서 경쟁하지 않는다면 경쟁에서 이길 수 없을 거예요.” 케니가 주장합니다.
케니는 헬무트가 “다른 어딘가에 존재하는 하위 카테고리의 수장”일 수 있다고 말하며, 헬무트가 단순히 최고의 월드 시리즈 오브 포커 선수일 뿐, 전반적인 GOAT는 아니라고 암시했습니다. 그런 다음 그는 헬무트가 “최고의 선수들이 있는 작은 분야”에서 경쟁할 때 성공할 수 없는 것으로 여겨지는 것을 비난했습니다.
“월드 시리즈에서 대부분 아마추어 선수들과 경기를 한다면, 아마추어 선수들을 이기는 데 능숙합니다. 마치 트리플 A의 왕이 될 수 있는 것과 같습니다.” 케니가 말했다.
세계에서 가장 높은 수준의 프로 야구는 메이저 리그 야구(MLB)이고, 한 단계 아래는 AAA 마이너 리그 야구(MiLB)입니다. 케니는 헬무트가 AAA에 더 적합하다고 말하고 있지만, 월드 시리즈 오브 포커는 포커의 야구 월드 시리즈나 슈퍼볼(NFL)과 동등합니다. 최소한 게임 내에서의 명성 면에서는 그렇습니다.
바둑이의 특성상, 4,5,6은 123과 무늬가 다른 1종류만 가능하므로, 기다리는 카드는 3장입니다.
52장 중 4장을 제외한 나머지 48장 중, 3장을 기다리는 것이죠. 확률은 1/16 입니다.
아침 123츄라이로 점심,저녁을 뜨는 확률이라면 점심에 뜨거나, 점심에 못뜨고 저녁에 뜰 확률인데, 점심에 7탑~K탑이라도 메이드를 만들었을 때는 바꾸지 않는걸로 계산해 봅니다. 그렇다면, 점심에 뜨는 것은 4~6탑 1/16(6.25%), 7~K탑 7/48 이므로 뜰 확률 10/48 뜨지 못하고 저녁에 6탑 안쪽으로 뜰 확률 38/48 * 3/47 = 약 5.05%
인디오홀덤 | 프라그마틱 슬롯사이트 아침 츄라이가 저녁까지 6탑 이상이 될 확률은 6.25+5.05=11.3% 입니다. 즉 9번에 한번꼴입니다. 점심에 7탑 이하로 뜬 경우 메이드를 버리고 더 높은 메이드를 노린다면 6탑 안쪽이 될 확률은 약간 더 높아지지만 큰 차이는 없습니다.
점심 123 츄라이로 저녁에 메이드시킬 확률은 6탑 이상이 6%, 8탑 이상이 10% 정도라고 보면 됩니다. 6구 투페어로 풀하우스 만드는 거랑 맞먹을 정도로 희박한 확률이죠.
이번주 화요일 오후 마이크로소프트의 엑스박스 라이브 서비스 로그인 기능에 오류가 발생했다. 사용자가 콘솔과 PC 모두에서 엑스박스 게임에 로그인하고 플레이할 수 없다는 보고가 다수 있었다.
마이크로소프트의 엑스박스 라이브 서비스 페이지는 오전 11시 7분(태평양 표준시) 경에 오류가 발생했으며, 오후 2시 38분(태평양 표준시)에도 ‘관련 문제’가 발생했다고 밝혔습니다. 오류는 상태 페이지의 ‘계정 및 프로필’ 섹션에 국한됐다.
“엑스박스 프로필에 로그인할 수 없거나 로그인한 상태에서 연결이 끊기거나 기타 관련 문제가 있을 수 있다”라는 문구와 함께 “해결이 보류 중”이라고 적힌 페이지가 나타났다. “게임, 앱 및 소셜 활동과 같이 로그인이 필요한 기능은 사용할 수 없다”는 내용이 안내됐다.
PC용 엑스박스 앱에도 서비스 문제를 인정하는 오류 메시지가 표시되었다. (앱 업데이트가 보류 상태인 PC에서는 업데이트를 다운로드해도 문제가 해결되지 않았다.)
엑스박스 라이브에 로그인하지 못하는 이번 오류는 게임마다 다른 방식으로 처리되었다. 카드 게임인 솔리테어 정도는 플레이할 수 있었지만 로그인은 불가능했고, 진행 상황을 클라우드에 저장할 수 없었. 클론다이크에서는 아무 문제 없이 카드를 뒤집을 수 있었다.
하지만 조금 더 최신 게임인 브로타토는 전혀 플레이할 수 없었고, 엑스박스에 로그인하지 않으면 실행도 되지 않았다. 마이크로소프트가 문제를 해결할 때까지는 콘솔 사용자뿐 아니라 엑스박스 서비스를 사용하여 마이크로소프트의 엑스박스 라이브 서비스에서 무료 게임을 다운로드해 플레이하는 PC 플레이어도 마찬가지 문제를 겪을 수 있다. editor@itworld.co.kr
2013년 도커가 등장한 시점에서 보면 리눅스 컨테이너가 마치 하룻밤 사이에 성공한 것처럼 느껴질 수 있다. 하지만 사실 컨테이너, 마이크로서비스와 쿠버네티스의 진화는 리눅스 운영체제의 커널 프리미티브를 기반으로 수십년에 걸쳐 이뤄졌다.
도커는 가볍고 사용하기 쉬운 소프트웨어 패키징 형식을 만들기 위해 이러한 프리미티브, 즉 cgroup과 네임스페이스를 빌딩 블록으로 사용했다. 리눅스 컨테이너는 오래전부터 구글을 비롯한 여러 기업에 사용됐는데 단지 도커가 등장하면서 주류 개발자가 컨테이너에 쉽게 액세스할 수 있게 된 것이다.
지금의 eBPF는 그렇게 해서 리눅스 커널 프리미티브에서 탄생한 또 다른 기술이다. 현재 모든 주요 네트워킹, 관찰가능성 및 보안 벤더는 “eBPF 기반” 제품을 제공한다고 주장한다. 실리움(Cilium), 테트라곤(Tetragon), 팔코(Falco)와 같은 eBPF 툴이 엔터프라이즈 아키텍처와 클라우드 서비스 제공업체 제품에서 모두 자리를 잡고 있다. 또한 eBPF를 만든 장본인 한 명에 따르면 지금은 eBPF 기반 혁신의 시작에 불과하다.
Infoworld는 eBPF의 공동 창시자이며 현재 리눅스 커널의 eBPF 공동 유지관리자인 대니얼 보크만에게서 이 기술의 기원, eBPF가 리눅스 커널 프로그래밍과 커스터마이징을 위한 표준 접근 방법으로 부상한 이유, 그리고 이것이 리눅스와 플랫폼 엔지니어링의 미래 측면에서 의미하는 바에 대한 이야기를 들어봤다.
솔라리스 학생에서 리눅스 커널 유지관리자로
eBPF를 향한 대니얼 보크만의 여정은 솔라리스의 내부를 이해하기 위한 탐구에서 시작됐다. 당시 솔라리스는 보크만이 다니던 대학의 컴퓨터과학 교육과정에서 아직 가르치던 과목이었다. 그러나 정작 원리를 살펴보기 위한 소스 코드의 부재는 이해를 가로막는 큰 장벽이었다. 보크만은 운영체제 수업의 이론에도 흥미를 느꼈지만 늦은 밤까지 리눅스 커널 소스 코드, 깃 로그, 메일링 리스트를 공부하는 데 열중하면서 본격적인 관심을 갖게 됐고, 커널과 접하는 저수준 사용자 애플리케이션을 만들기 시작했다.
곧 보크만은 패킷 필터, tcpdump와 libpcap, 그리고 패킷이 다양한 계층을 오갈 때 네트워크 스택이 어떻게 작동하는지를 탐구했다. 보크만은 여가 시간에 더 효율적인 tcpdump 클론을 만들어서 리눅스 네트워킹 스택에 작은 코드 개선을 보내기 시작했다. 석사 과정을 시작할 시점에 독일 라이프치히 지역의 스타트업에서 리눅스 커널 코드 개발 업무를 담당하는 첫 직장을 구했다.
보크만은 2010년에 인터페이스당 여러 rx_hook를 실행할 수 있도록 netpoll을 확장하는 첫 번째 패치를 리눅스 커널에 제출했는데, 스스로의 표현에 따르면 “완전한 초보” 시절이라 커널에 교착 상태를 유발하는 버그를 일으켰다. 다행히 다른 기여자가 신속하게 이를 발견해 수정했다. 그러나 보크만은 이 일에 매료됐다. 그에게 리눅스 커널 개발은 천직이라고 할 만큼 매력적인 환경이었다.
보크만은 커널을 위한 조합 가능한(composable) 네트워킹 스택 개발을 주제로 한 석사 논문을 완성하기 위해 취리히로 거처를 옮겼다. 프리BSD의 netgraph에서 영감을 받아 네트워킹 블록을 FPGA로 오프로드하고 패킷 처리를 위한 조합 가능한 그래프를 구축하는 방법을 실험했다. 그러나 이 과정에서 보크만은 학술 논문이 너무 단조로우며 장기적이고 실질적인 영향은 미미하다는 사실을 깨닫고 리눅스 커널에 풀타임으로 기여하는 것이 훨씬 더 보람 있는 일이라는 생각을 갖게 됐다. 보크만은 스위스 도메인(.ch) 이메일을 사용하는 토마스 그라프라는 리눅스 기여자를 알게 되어 자연스럽게 연락했고, 초대를 받아 레드햇의 리눅스 커널 네트워킹 팀에 합류했다(두 사람 모두 이후 실리움의 공동 제작자가 됨).
현재 보크만은 전 세계 상위 1%의 리눅스 커널 기여자다.
리눅스 OS의 네트워킹에 대한 재고
eBPF의 기원은 2011년까지 거슬러 올라간다. 당시는 소프트웨어 정의 네트워킹(SDN)이 부상하고 리눅스 도입이 급증하던 시기였다. 리눅스 서브시스템은 하나의 서버와 호스트 운영체제가 아니라 리눅스 머신 클러스터에서 실행되는 마이크로서비스 아키텍처와 분산 애플리케이션의 새로운 패러다임에 보조를 맞춰야 했다.
보크만이 속한 네트워킹 스택의 커널 개발은 SDN과 클라우드 네이티브 네트워킹 요구사항을 충족하기 위한 작업이 이뤄지는 최전선이었다. cgroup(CPU, 메모리 처리), 네임스페이스(net, mount, pid), SELinux, seccomp, Netfilter, Netlink, AppArmor, Auditd, Perf 등 리눅스 빌딩 블록의 상당수가 10년 이상 전에 설계된 만큼 리눅스에는 새로운 추상화가 필요했다. 또한 보크만은 당시 가장 진보적인 SDN 프로젝트였던 오픈 vSwitch(OVS)뿐만 아니라 netfilter의 nftables와 같은 기술이 “차세대” 리눅스 네트워킹으로 추진되는 모습을 보면서 더 나은 방법이 있다고 생각했다.
리눅스 커널은 더 높은 네트워킹 속도에 보조를 맞추기 위해 확장되고 있었지만 새로운 맞춤형 기능을 프로그래밍하기 위한 유연성이 부족했다. 또 다른 제약은 “사용자 공간을 망가뜨리면 안 된다”는 요건이었다. 즉, 리눅스 커널은 클라우드 네이티브 애플리케이션이 등장하기 훨씬 전에 개발된 모든 소프트웨어를 계속해서 지원해야 했다. 아쉽게도 이 “레거시의 무거운 짐”으로 인해 네트워킹 혁신의 일부가 커널에서 사용자 공간으로 이동했다.
간단히 말해 새로운 클라우드 운영 모델은 훨씬 더 많은 자동화, 기능의 이동, 확장, 그리고 더 까다로운 네트워크 성능 요구사항을 불러왔다. 그러나 리눅스 커널의 독립적인 서브시스템에는 커널에서 이 모든 새로운 클라우드 컨텍스트를 푸시하고 집계하고 관련하여 조치를 취하기 위한 규칙이 없었다.
리눅스 프로그래밍에서 패킷 처리(구문 분석, 조작, 필터링, 포워딩)는 “가능한 것”에 대한 가장 기본적인 관심사다. 이는 네트워크 패킷이 스택을 따라 이동할 때 커널 개발자가 이 패킷을 라우팅, 제어, 검사하기 위한 메커니즘이다. 커널의 네트워킹 스택에서 패킷 처리의 역할은 엔진에서 기화기, 들로리안 타임머신에서 플럭스 커패시터의 역할과 같다.
애플리케이션 개발자는 대부분 사용자 공간에서 애플리케이션을 작성하면서 커널에 필요한 시스템 호출로부터 애플리케이션을 보호하는 추상화를 사용한다. 따라서 애플리케이션은 하드웨어와 인터페이스해야 하는 경우, 즉 화면에 쓰거나 파일에 쓰거나 네트워크 패킷을 보내야 하는 경우 커널의 도움이 필요하다. 커널은 사용자 공간 애플리케이션과 하드웨어 사이에 일반적인 공통 인터페이스를 제공하며, 동시에 실행되는 여러 사용자 공간 프로세스를 조율한다.
가상화에서 컨테이너로 진화하면서 iptables, nftables, OVS, 리눅스 트래픽 제어(TC)를 비롯해 패킷 필터링을 위한 많은 접근법이 리눅스 커널 내에서의 자리를 두고 경쟁했다. 이 경쟁에서 네이티브 성능으로 프로그램을 실행하면서 표현력과 검증자에 의한 안전까지 결합된 eBPF가 부상했다. 즉, eBPF는 사용자가 다른 대안으로는 불가능한 방식으로, 커널 손상에 대한 위험 없이 커널을 프로그램할 수 있게 해준다.
더 ‘프로그래머블’한 리눅스 커널
보크만이 처음 eBPF에 끌린 이유는 eBPF가 네트워킹에 가져올 수 있는 유연함과 성능이었지만 이 새로운 기술의 이점은 네트워킹을 훨씬 더 뛰어넘어 확장이 가능하다는 사실이 드러났다.
보크만은 “eBPF는 빌드하고 즉시 배포할 수 있는 기본 기능을 통해 큰 문제를 해결했다. eBPF가 내장된 오케스트레이션 프로그램을 만들어서 기반 커널 버전에 관계없이 배포할 수 있다. 또한 코어 커널 ABI 안정성을 위해 대형 벤더에 막대한 비용을 지불하는 대신 이제 eBPF를 사용하면 된다. 다양한 사용 사례에 따라 커널을 확장하기 위한 모듈이 필요 없다”고 말했다.
eBPF는 사용자가 리눅스 커널 내에 맞춤형 프로그램을 로드해서 안전하게 실행할 수 있게 해주는 범용 어셈블리 언어, 즉 런타임에 운영체제에 온갖 종류의 기능을 추가할 수 있는 방법이 됐다. 엄격한 형식이 지정되고 안정적인 명령어 집합을 갖고 있으며 확장 기능은 하위 호환된다.
보크만은 “eBPF는 일반적인 모놀리식 커널과 마이크로커널 사이의 간극을 잇는 새로운 유형의 소프트웨어라고 생각하면 된다. 신뢰할 수 있는 사용자 공간에서 안전하게 커널을 확장한다. eBPF의 좋은 점은 일반 커널 코드만큼 빠르다는 것이다. eBPF는 샌드박스가 아니며 검증자는 이 프로그램을 완전히 파악해서 신뢰할 수 있는 환경에서 실행하기에 안전한지 여부를 판단한 다음 네이티브 코드로 JIT 컴파일할 수 있다”고 말했다.
eBPF는 안전하고 빠를 뿐만 아니라 네이티브 속도로 작동한다. 매우 유연해서 다양한 사용자가 다양한 방식으로 사용할 수 있다. 보크만은 “eBPF의 강점은 사용 사례가 있거나 특정 방식으로 무언가를 처리해야 할 때만 사용자 관점에서 코드를 활성화할 수 있다는 것이다. 다른 부분에 불이익을 주지 않는다. 커널에 하드코딩되어 핵심 경로를 점점 더 느리게 하고 결국 성능을 죽이는 것과는 다르다”고 설명했다.
실리움의 그라프는 “eBPF가 나오기 전에는 대부분의 사용자가 엔터프라이즈 리눅스 배포판을 사용하거나 자신의 디바이스에 설치된 커널 버전을 그냥 실행했다. eBPF는 이를 근본적으로 바꿔 놓았다. 런타임이 존재하므로 어떤 아이디어든 몇 년이 아니라 며칠만에 eBPF 프로그램으로 바꿔서 런타임에 로드할 수 있다. 우리는 무엇을 먼저 다시 구축할지를 결정해야 했다”고 말했다.
보편화된 커널 엔지니어링
구글 보그(Borg)를 비롯해 하이퍼스케일러에서 탄생한 다른 기술과 마찬가지로 eBPF도 처음에는 커널 개발 기술을 갖춘 소수의 소프트웨어 엔지니어링 업체에서만 사용됐다. 커널 엔지니어링과 eBPF 프로그램 작성을 위해 필요한 저수준 C 프로그래밍 기술을 갖춘 개발자는 많지 않았다.
그러나 현재 이 소수의 전문가들이 수백만 명의 사용자들과 접하는 프로그램을 만들고 있다. eBPF 기반 프로그램은 네트워킹, 보안, 관찰가능성을 담당하는 플랫폼 엔지니어링 팀 관점에서 가장 흥미로운 분야이며, 이러한 프로그램을 사용하는 많은 사람들은 그것을 가능하게 해주는 기반 eBPF 추상화에 대해 아무것도 알 필요가 없다. 보크만은 eBPF에 대한 최근 워크숍 기조 연설에서 “클라우드 네이티브로부터의 조용한 플랫폼 혁명이라고 생각하면 된다”고 말했다.
방대한 eBPF 환경의 많은 애플리케이션을 잠깐 살펴보면 다음과 같다.
실리움은 컨테이너 워크로드 사이에 3계층 및 4계층 연결을 제공하기 위한 컨테이너 네트워크 인터페이스(CNI)의 eBPF 기반 구현으로 시작됐지만, 이후 발전하면서 대부분의 클라우드 서비스 제공업체의 쿠버네티스를 위한 기준 네트워크 계층이 됐다. 실리움은 쿠버네티스 팟 사이, 그리고 외부 서비스로 가는 트래픽에 대한 분산 로드 밸런싱을 구현하며, 거의 무제한의 규모에서 eBPF의 효율적인 해시 테이블을 사용해서 kube-proxy를 완전히 대체할 수 있다. 또한 3계층부터 7계층까지의 정책 시행, 통합 인그레스 및 이그레스 게이트웨이, 대역폭 관리, 엔보이(Envoy)와 결합된 서비스 메시, 심층 네트워크 가시성과 같은 고급 기능도 지원한다.
테트라곤 역시 eBPF 프로그램으로, 보안 관찰가능성과 런타임 실행 기능을 제공한다. 테트라곤은 eBPF의 낮은 오버헤드를 활용해서 플랫폼 팀이 네트워크 흐름과 기타 커널 내 이벤트를 매우 구체적인 프로세스 및 관련 프로세스 트리에 이르기까지 쿠버네티스 객체(레이블, 팟, 네임스페이스)에 연결할 수 있게 해준다. XZ 유틸즈(XZ Utils)와 같은 소프트웨어 공급망 보안 익스플로잇이 등장한 이후 테트라곤은 플랫폼 팀에 특정 소프트웨어가 환경의 어느 위치에서 실행되는지 찾고 커널 수준에서 구체적인 정책 조치를 취할 수 있는 더 심층적인 방법을 제공하는 데 목표를 두고 있다.
픽시(Pixie)는 eBPF를 사용해서 “수동 계측 없이 자동으로 텔레메트리 데이터를 캡처”한다. 차세대 애플리케이션 성능 관리 및 모니터링 벤더 사이에서 인기 있는 빌딩 블록으로 부상했다. 구글에서 “observability AND eBPF”를 검색해 보면 eBPF의 성능이 텔레메트리 데이터를 얼마나 풍부하게 변화시키고 있는지 볼 수 있다. 클라우드 네이티브 시스템의 실시간 상태 추론을 위해 지금까지는 상관관계를 파악할 모니터링 데이터를 축적해야 했다. 이 텔레메트리 데이터 컬렉션을 커널 가까이 가져오면 일관성을 대폭 높이고 리소스 사용량을 줄일 수 있다.
카트란(Katran)은 커널 내 패킷 처리를 기반으로 하는 새로운 접근 방식을 통해 독점적인 3계층 및 4계층 로드 밸런서의 위상에 도전할 수 있는 C++ 라이브러리다. 모두가 eBPF 프로그램을 만들 수 있는 것은 아니지만 현재 개발되고 있는 여러 프로그램은 기업 인프라에서 지금까지 비교적 정체된 영역을 대상으로 하며, 클라우드 네이티브 사용 사례를 위한 현대화를 이끌고 있다.
보크만은 “인프라 소프트웨어의 다음 10년은 eBPF를 사용할 수 있는 플랫폼 엔지니어와 eBPF를 활용하여 더 고수준 플랫폼을 위한 적절한 추상화를 만드는 프로젝트에 의해 정의될 것이다. 클라우드 네이티브 컨텍스트의 부재라는 커널 문제를 eBPF가 해결했다”고 말했다.
이달은 쿠버네티스 10주년이지만 그럼에도 여전히 분산 애플리케이션, 컨테이너 오케스트레이션, 플랫폼 엔지니어링은 현재 초창기다. 커널 수준에서 eBPF를 직접 엔지니어링하는 사람은 거의 없지만 수많은 사람들이 eBPF 기반 프로그램을 사용하게 될 것이다. 여러분이 대형 퍼블릭 클라우드 제공업체 플랫폼 중 하나의 쿠버네티스에서 워크로드를 실행 중이라면 이미 eBPF 기반 프로그램을 사용 중일 가능성이 높다. editor@itworld.co.kr