인디오슬롯 | 홀덤총판문의 무한경쟁, 에오스 블랙의 주무기는?

작년부터 인디오슬롯 | 홀덤총판문의 대규모 전쟁을 핵심으로 앞세운 MMORPG가 정체기에 들어섰다는 이야기가 나오고 있으나 올해 시장 분위기는 전혀 딴판이다. 작년 상반기와 마찬가지로 올해도 회사 규모를 가리지 않고 MMORPG 신작 다수가 출시됐고, 7월 이후 서비스를 예정한 게임도 적지 않다. 시장경쟁이 한층 치열해진 가운데 모두가 스퍼트를 내는 느낌이다.

인디오슬롯 | 홀덤총판문의 아울러 MMORPG의 경우 기존에 이를 해봤던 유저를 유치하는 것이 최우선이기에 이들이 익숙해지기 쉽게 접근하는 것이 불문율이다. 게임마다 특징적인 콘텐츠 하나씩을 앞세우지만 전반적인 전개와 재미는 대중성을 고려해 비슷해지는 경향을 보인다. 지난 20일에 중견 게임사인 블루포션게임즈가 출시한 에오스 블랙 역시 큰 틀에서는 기존 MMORPG가 보여줬던 게임성에서 크게 벗어나 있지 않다.

인디오슬롯 | 홀덤총판문의 대형 게임사가 즐비한 MMORPG 시장에서 중견 게임사가 차지할 수 있는 위치는 과연 어디인가를 주목해볼 필요가 있다. 수집형 RPG와 마찬가지로 MMORPG 역시 선택지가 많기 때문에 각 게임에 적은 비용을 들여 여러 개를 동시에 플레이하는 것도 가능하다. 이 게임에서 모종의 이유로 진행이 막혔다면 적정하게 관리해주는 동시에, 새로 연 다른 게임을 소소하게 즐기며 한숨 돌릴 여유를 찾는 식이다.

이러한 방향성에서 에오스 블랙이 추구하는 바는 뚜렷해 보인다. 동종 장르의 다른 게임보다 사냥을 통해 아이템을 획득하는 재미가 강조되어 있으며, 유료 상품 구성과 가격 역시 부담이 적은 편이다. 이를 토대로 게임 다수를 번갈아 플레이하거나, 주력 게임 전개가 답답해진 시점에 굳어진 머리를 풀어줄 세컨드 게임으로 자리잡는 것이다.

부담 줄인 유료 상품 구성은 사실이었다

우선 살펴볼 부분은 유료 상품 구성이다. 에오스 블랙에서 유료로 판매하는 상품은 다이아, 영혼체(변신) 확률형 아이템, 유료 액세서리로 압축된다. 우선 확률형 아이템 중 유료 결제로 구매해야 하는 다이아를 활용하는 것은 영혼체 뽑기 하나밖에 없고. 11회 뽑기 기준으로 1회당 뽑기 비용도 2,640원으로 상대적으로 비용이 낮은 편이다.

아울러 패밀리어(펫)는 다이아를 결제하면 누적되는 마일리지로만 뽑을 수 있고, 신수(탈 것)는 출시 후 미션 달성 등을 통해 모을 수 있는 ‘모험가의 증표’를 통해 획득한다. 마일리지 역시 다이아를 구매해야 얻을 수 있는 재화임을 고려하면 간접적으로 유료라 볼 수 있으나, 모험가의 증표는 현재 기준으로는 결제와 관련된 부분이 없다. 주요 유료 확률형 아이템 상품으로 대표되는 탈 것을 무료 획득으로 돌린 것이다.

여기에 MMORPG를 포함한 모바일로 서비스되는 게임에서 구매가 강제되는 느낌을 주는 패키지가 적은 편이다. 6월 24일 기준으로 에오스 블랙에서 패키지 상품은 11회 뽑기와 강화 의뢰서를 묶은 2종만 있으며, 다이아를 구매하면 누적되는 마일리지로 구매할 수 있다. 게임 내에서 직접적으로 다이아를 쓰는 상품은 영혼체 뽑기, 몬스터의 증표, 유료 액세서리, 캐릭터 슬롯 확장, 스탯 초기화, 출석에 따라 영혼체∙패밀리어∙액세서리를 주는 배틀패스 방식 상품이 전부다.

에오스 블랙은 전반적으로 상품 구성이 복잡하지 않아서 파악하기 쉽다. 따라서 마일리지로 구매할 수 있는 상품도 염두에 두면서 다이아 결제를 고려해볼 수 있다. 아울러 영혼체∙패밀리어∙신수 모두 합성으로 토대로 중간 단계라 할 수 있는 ‘희귀’가 등장하는 비중이 상대적으로 높은 편이고, 게임 내 마을 상점에서 플레이를 통해 모을 수 있는 골드로 희귀 무기와 장비를 구매할 수 있다. 즉, 적은 비용으로 초기 플레이에 어려움이 없을 정도의 전투력을 갖추는 것이 가능하다.

필드 사냥에서 종종 ‘희귀’ 장비가 나온다

여기에 일반적인 필드 사냥을 통해서도 기존 MMORPG보다 희귀 장비가 좀 더 자주 드랍되는 느낌이다. 기자 역시 이틀 간 하루 5시간은 직접 플레이, 6시간은 오프라인 모드인 매니징 모드를 이용한 결과 희귀 방어구 2개를 획득할 수 있었다. 다른 MMORPG에서는 희귀보다 한 단계 아래인 고급이나 일반도 무기나 방어구를 보기 어려웠던 경험과 비교해보면 아이템을 획득해 전투력을 높이는 재미를 조기부터 맛볼 수 있다. 이러한 부분은 자동사냥이 주를 이뤄 지루해질 수 있는 플레이에 소소한 재미를 주고, 유저 간 거래에 활력을 더하는 요인이 될 수 있다.

)

사냥을 통해 모은 몬스터 증표를 등록시켜 완성해가는 ‘몬스터 도감’도 느리지만 조금씩 게임이 전개되어가는 듯한 느낌을 준다. 에오스 블랙 역시 40레벨 초중반부터 퀘스트 진행에 어려움이 발생하며 캐릭터를 키우기 위한 장시간 사냥을 반복하는 ‘성장 구간’이 도래한다. 이 때 유저들이 추천하는 부분 중 하나가 몬스터 도감을 채워가는 부분이다. 특히 이미 획득한 증표를 합성하면 모으지 못한 새로운 증표도 얻을 수 있다. 즉, 본인 레벨에 맞는 사냥터에 머물면서 사냥해도, 모은 증표로 합성을 거쳐 도감을 채워가며 추가 능력치를 지속적으로 쌓아갈 수 있다.

인디오게임 | 홀덤먹튀본사 브래드 오웬의 최악의 포커 하루

인디오게임 | 홀덤먹튀본사 플레이어의 삶은 기복이 심하다. 그게 바로 삶의 본질이고 브래드 오웬 의 추종자 군대는 포커 룸에 발을 들이지 않고도 그 롤러코스터를 탈 수 있다. 그 블로거가 테이블에서의 승패를 기록했기 때문이다.

오웬과 그의 충성스러운 팬들에게는 불행히도 롤러코스터는 그의 최신 영상에서 급격히 떨어졌습니다.

Bobby’s Room에서 캐시 게임을 해서 25,000달러를 따낸 직후, 오웬은 며칠 안에 아빠가 될 테니 당분간 포커를 하지 않겠다고 말했습니다. 하지만 그는 다음 날 같은 플레이어 그룹과 25달러/50달러를 하도록 초대받았기 때문에 포커를 하지 않겠다고 거짓말을 했습니다.

지치고 인디오게임 | 홀덤먹튀본사 바쁜 일정이 다가오고, 처음으로 아빠가 되는 것과 함께하는 모든 것을 정리하고 있음에도 불구하고, 오웬은 초대를 수락하기로 결정했습니다. 그는 포커 룸으로 가서 15,000달러 상당의 칩을 샀습니다.

세션은 시작부터 좋지 않았고, 오웬은 플레이 시작 30분 만에 상당한 팟을 잃었습니다. 오웬은 9인조 폭탄 팟에서 초반 포지션에서 에이스-킹 오프수트를 받았고, 9명의 플레이어가 모두 팟에 200달러를 넣었습니다. 플랍은 킹-잭-텐에 다이아몬드 2개가 있었습니다. 오웬은 1,800달러 팟에 300달러를 베팅했고, 빅 블라인드와 언더더건 플레이어만 콜했습니다.

하트 에이스가 턴에 나왔고, 세 명의 플레이어가 모두 체크했습니다. 스페이드 5개 리버에서 빅 블라인드가 1,000달러를 리드했습니다. 언더더건이 폴드했고, 오웬은 빅 블라인드가 브로드웨이 스트레이트를 위해 킹-퀸을 보여주기만을 콜했습니다.

오웬은 에이스-킹을 가진 숏 스택 플레이어와 팟을 나눠 가졌고, 7듀스 게임이 진행 중일 때 7듀스 오프슈트로 핸드를 이겨서 작은 보너스를 받았습니다. 그 결과 모두가 오웬의 대담한 플레이에 200달러를 주었습니다.

7월 28일부터 열리는 WPT 글로벌 서머 페스티벌에서 800만 달러 이상 보장
더 알아보기
그의 손을 잘못 읽다
하트의 킹-듀스로 가볍게 3배 베팅해서 엄청난 팟을 따낸 후, 오웬은 그때까지 그가 플레이한 것 중 가장 큰 팟에서 재앙을 맞았습니다(영상을 9:39로 빨리 넘겨서 플레이 결과를 확인하세요).

인디오게임 | 홀덤먹튀본사 오웬은 에이스-잭 오프슈트로 버튼에서 $150으로 레이즈했고, 스몰 블라인드에서 솔리드 플레이어가 콜했습니다. 플랍은 두 개의 클럽으로 킹-8-5로 떨어졌고, 오웬은 클럽의 잭을 가졌습니다. 스몰 블라인드는 오웬의 $100 컨티뉴에이션 베팅을 체크-레이즈하여 $400으로 올렸고, 오웬은 콜했습니다. 스몰 블라인드는 턴에서 클럽의 6이 나오자 체크했고, 오웬은 $1,100 베팅을 했고, 스몰 블라인드는 콜했습니다. 리버에서 하트의 7이 나와 보드에 스트레이트로 4를 넣었고, 스몰 블라인드는 체크했습니다. 오웬은 $3,400 팟에 $4,000을 베팅했고, 스몰 블라인드는 탱크-콜하여 포켓 5로 팟을 이겼습니다.

하지만 오웬이 플랍을 잘못 해석한 탓에 이야기의 일부만 틀렸습니다. 스페이드가 두 개 있고 클럽이 두 개 없었기 때문에 그는 백도어 플러시 드로가 없었고, 플랍 체크-레이즈 이후에도 계속 플레이할 수 있을 거라 생각했습니다.

10,000달러 더 충전하기
하이잭에서 하트 에이스-포로 125달러까지 올린 후, 오웬은 스몰 블라인드의 공격적인 플레이어에게서 525달러 3배 베팅을 콜했습니다. 스몰 블라인드는 8-5-5 플랍에서 425달러 베팅을 했고, 오웬은 콜했습니다. 스몰 블라인드는 클럽 듀스 턴에서 1,050달러를 냈고, 오웬은 콜했습니다. 스몰 블라인드는 하트 리버 10에서 체크했고, 오웬은 팟에서 1,300달러를 스태브했습니다. 스몰 블라인드는 팟을 따내고 모든 플레이어에게서 추가로 200달러를 따내기 위해 7-듀스로 콜하기 전에 자신의 선택 사항을 숙고했습니다.

오웬은 1만 달러를 더 넣어 스택을 다시 채웠고, 상대가 플러시 드로를 놓친 뒤 2번째 페어를 가지고 있을 때 트리플 식스를 꺼내자 즉시 수천 달러를 잃었습니다.

인기 스트리머이자 블로거는 에이스 킹이 숏 스택 플레이어의 에이스 5에 맞서 한 번 런아웃을 졌지만, 두 번째 보드에서는 승리하면서 세션에서 두 번째 팟을 차지했습니다.

또 다른 다진 냄비
프레디 디브프레디 디브
몇 개의 괜찮은 팟을 따낸 후, 오웬은 2회 World Series of Poker(WSOP) 브레이슬릿 우승자이자 2회 World Poker Tour(WPT) 챔피언인 프레디 딥을 상대로 프리플랍에서 올인을 했습니다 . 딥은 $200으로 오픈했고, 오웬은 포켓 잭으로 $1,000으로 3배 베팅했지만, 딥은 $10,000으로 잼했습니다. 오웬은 콜하고 두 번 런을 하기로 동의했고, 첫 번째 런 아웃에서 지고 두 번째 런을 홀드했습니다.

풀하우스를 대표하다
오웬이 마지막으로 낸 큰 핸드는 그가 플레이한 방식에 대해 화를 내게 했는데, 그 이유는 리버에서 11,000달러를 잃었기 때문이다. 하이잭은 150달러로 오픈했고, 오웬은 하트의 에이스-잭으로 컷오프에서 콜했고, 빅 블라인드는 콜했다. 스페이드 2개로 퀸-텐-식스 플랍까지 3가지 방법이 있었다. 빅 블라인드는 체크했고, 하이잭에서 처음 레이저를 올린 사람은 오웬이 600달러로 레이즈하기 전까지 175달러를 계속했다. 빅 블라인드였지만, 하이잭은 콜했다.

두 선수 모두 턴에서 잭이 도착하는 것을 체크했습니다. 리버에서 또 다른 잭이 도착했고, 하이잭은 1,725달러 팟에 3,500달러를 베팅했고, 오웬은 11,000달러로 레이즈하여 트립을 블러프로 효과적으로 바꾸었고, 오웬은 이 움직임에 전혀 만족하지 못했습니다. 상대방이 즉답하지 않았고, 무엇을 할지 결정하는 데 시간이 걸렸기 때문에 효과가 있었던 듯했습니다. 상대방은 결국 콜했고, 팟의 하단 풀 하우스를 위해 포켓 식스를 뒤집었습니다.

오웬은 스택에 6,000달러를 추가했고, 이는 그가 총 45,000달러를 가지고 있다는 것을 의미합니다. 그는 쌓이기 전에 2,000달러를 되찾았습니다.

WPT 글로벌 서머 페스티벌, WPT 월드 챔피언십 좌석 수여

“그건 제가 해본 포커 중 최악의 세션이었어요. 23,800달러를 잃었어요. 어제 플레이해서 25,200달러를 땄어요. 어제 이긴 건 사실상 전부 잃었어요. 어제 벨라지오에서 가장 큰 승리를 거둔 게 오늘 벨라지오에서 가장 큰 손실을 본 걸로 바뀌었죠.

“솔직히 말해서, 저는 경기를 하지 말았어야 했습니다. 큰 승리를 거둔 후에는 하루를 내어 긴장을 푸는 게 좋지만, 저는 경기에 초대를 받았고 그들이 저를 초대할 때마다, 특히 큰 승리를 거둔 후에는 어딘가에 가고 싶어졌습니다. 저는 지쳐 있었습니다. 오늘 아침 6시에 일어나서 3시간 동안 비디오 작업을 했습니다. 잠을 잘 수 없었고 많은 일을 해야 했기 때문에, 경기에 앉기 전에 이미 피곤했습니다.”

해피 엔딩
오웬은 최악의 포커 세션을 했지만, 영상은 아들 헨리의 탄생으로 행복한 분위기로 끝나므로, 사실 그는 이기고 있는 셈입니다. 오웬은 이제 앞으로 몇 주 동안 WPT Global 에서 보장된 800만 달러의 Summer Series를 온라인으로 진행할 계획입니다 .

풍성한 환영 패키지로 WPT 글로벌 커리어를 시작하세요
오늘 PokerNews를 통해 WPT Global을 다운로드하여 거대한 여름 축제를 준비하세요 . 엄청난 환영 보너스를 받을 수 있습니다. 아래의 환영 패키지 표를 확인하여 어떤 보너스를 받을 자격이 있는지 확인하세요.

인디오게임 | 슬롯사이트 다니엘 네그레아누, WSOP 메인 이벤트 논란 이후 규칙 명확성 요구

월드 시리즈 오브 인디오게임 | 슬롯사이트 포커(WSOP) 메인이벤트 파이널 테이블 에서 핸드 간 노트북 지원에 대한 논란 에 대응하여 , 다니엘 네그레아누는 토너먼트 운영자들에게 토너먼트에서 솔버와 프리플랍 툴에 대한 규칙을 명확히 하고, 플레이어들이 불공평하다고 생각되는 것을 발견하면 이를 지적해 줄 것을 요구했습니다.

챔피언 Jonathan Tamayo 와 Dominik Nitsche를 포함한 레일이 관련된 Main Event 논란에 대한 Negreanu의 코멘트는 월요일 오후 Doug Polk의 YouTube 채널 에 출연하는 동안 나왔습니다 . Alan Keating 과 함께 세 사람은 Main Event 사건, 대중에 대한 인식 및 운영자가 앞으로 라이브 포커 환경을 개선할 수 있는 방법에 대해 논의했습니다.

준우승자 Jordan Griff가 Doug Polk에게 한 말을 읽어보세요

인디오게임 | 슬롯사이트 메인 이벤트 반응
주로 캐시 게임 플레이어인 키팅은 레일에 노트북이 있는 것을 보고 첫 반응을 보였다. “사람들이 서로를 바라보며, 이게 부정행위가 아니야? 누가 뛰어들 거야? 여기서 무슨 일이 일어나고 있는 거지? … 내가 결승 테이블에 올랐다면, 그런 것에 맞서야 할까? 토너먼트 플레이어들에게는 어떤 꿈이 살아 있을까?”

앨런 키팅앨런 키팅
네그레아누는 소셜 미디어에서 다른 사람들이 말했듯 이, 레일 위의 노트북은 10년 전부터 있었지만 “최근 10년 동안은 없었던 새로운 점은 AI, 솔버, 이런 종류의 것에서 나오는 오늘날 사용 가능한 도구입니다.”라고 말했습니다.

“노트북에 대한 구체적인 이야기는 아닙니다. 노트북은 10년 동안 파이널 테이블에서 사용되어 왔기 때문입니다. 일반적으로 팀이 하는 일은 스트림을 보는 것입니다.”

인디오게임 | 슬롯사이트 포커의 가장 큰 홍보대사로 꼽히는 네그레아누는 “어느 정도는 이런 일이 가장 큰 무대에서 일어난 게 다행일 수도 있다”며 “이제 우리 모두가 이 문제에 대해 대화해야 하고, (질문해야 할) 방향이 이게 맞는지, 아니면 이를 바로잡기 위해 뭔가 할 것인지”를 묻는다고 덧붙였다.

메인 이벤트 논란에 대해 자세히 알아보세요

최소한의 모서리, 나쁜 광학
파이널 테이블에서 노트북을 사용하는 건 새로운 일이 아니지만, 세 사람은 노트북으로 프리플랍 차트나 포커 소프트웨어를 보는 건 지나치다고 생각한다.

“이제 분위기가 완전히 달라졌어요.” 폴크가 말했다. 폴크는 2016년 WSOP에서 프리플랍 차트를 언급하면서 더 잘 몰랐다고 말한 일화도 말했다. “우리 모두 이에 대해 이야기했고, 이게 공중에 떠돌고 있다는 걸 알고 있고, 도구가 훨씬 더 강력해졌어요. 그리고 대중이 이걸 보고 반응하면, 무슨 일이 일어날지 알 수 있어요. 이 문제에는 두 가지 측면이 있는 게 아니에요. 사람들은 이에 강력히 반대해요.”

“홀덤에는 4개의 스트리트가 있어서, 본질적으로 실수를 할 가능성이 있는 스트리트 하나를 제거하는 셈입니다.” 네그레아누는 프리플랍 어시스트에 대해 말했는데, 일부에서는 니체가 파이널 테이블에서 프리플랍 어시스트에 대해 언급했다고 비난했습니다.

다니엘 네그레아누다니엘 네그레아누
네그레아누는 아마추어와의 1대1 대결에서 얻은 이점은 미미할 것이라고 인정했고 “그들(타마요의 레일)은 그것을 숨기지 않았기 때문에, 그들은 자신들이 하는 일이 잘못되었다고 생각하지 않았을 것이라고 추측할 수밖에 없다”고 말했다.

“하지만 이런 경우, 정말로 명확성을 얻는다고 생각합니다. 그리고 ‘음, 발표를 듣지 못했어요 . ‘라고 말하는 것도 당신을 면제시키지 못합니다. 법을 모른다고 해서 법을 따라야 하는 의무에서 면제되지는 않습니다.”

WPT 글로벌
“그리고 그 우위(획득)는 미미합니다. 그래서 제가 부분적으로 궁금한 건, 만약 당신이 이것으로부터 그렇게 적게 얻는다면, 이게 정말 광학적으로 당신이 하고 싶은 일인가요? 이게 정말 필요한가요?”

무엇을 해야 할까?
Keating과 Negreanu는 둘 다 WSOP가 “이 규칙을 가능한 한 명확하게 하기 위해” 입장을 명확히 해야 한다고 말했습니다. Negreanu는 토너먼트 구역(전체 방으로 정의)의 어느 지점에서도 솔버를 사용하지 않아야 하며, 여러 라운드 페널티 또는 실격의 위험이 있어야 한다는 규칙을 제안했습니다.

네그레아누는 또한 토너먼트에서 퍼즐을 푸는 사람으로부터 얻은 정보를 다른 플레이어에게 전달하는 것도 규칙에 따라 금지되어야 한다고 덧붙였다.

그는 “지역사회의 누구도 이걸 보고 ‘응, 괜찮을 거야’라고 생각하지 않을 것 같아요.”라고 말했습니다.

인디오홀덤 | 슬롯무료체험 개발자가 고 언어를 좋아하는 8가지 이유, 그리고 싫어하는 8가지 이유

인디오홀덤 | 슬롯무료체험 2007년, 구글의 몇몇 프로그래머가 소프트웨어를 만들기 위한 여러 옵션을 살펴봤지만 마음에 드는 것을 찾을 수 없었다. 이들은 월드 와이드 웹을 위한 데이터를 끊임없이 저장하고 전송하는 수백만 라인의 코드를 관리해야 했고 이 코드는 전 세계의 네트워크에서 수백만 개에 이르는 연결을 처리해야 했다. 데이터 경로에는 경합과 동시성에 따른 문제가 가득했다.

인디오홀덤 | 슬롯무료체험 기존 프로그래밍 언어는 별로 도움이 되지 않았다. 기존 언어는 게임, 데스크톱 관리, 또는 웹 브라우저가 등장하기 전부터 존재했던 다른 일반적인 작업을 관리하기 위한 용도로 만들어졌다. 이러한 언어의 매끄럽지 못한 부분이 마음에 들지 않았던 구글 코더는 더 나은 방법을 고민하기 시작했다. 구글에 필요한 모든 안전과 보안을 충족하면서 단 몇 줄의 코드로 I/O 작업을 처리할 수 있는 방법이 없을까?

이 질문에 대한 답은 ‘없다’였다. 그래서 표면적으로 C 또는 자바와 비슷한 간단한 언어인 고랭(Golang)을 만들었다. 첫 공개 버전은 2009년에, 첫 1.0 버전은 2012년에 출시됐다. 구글은 지금도 고 언어에 계속 투자하고 있다. 기사 작성 시점에 최신 안정화 버전은 1.22.5다.

인디오홀덤 | 슬롯무료체험 구글 내에서 고 언어는 인프라의 많은 부분을 움직인다. 구글 외부의 많은 프로그래머도 고를 채택했다. 고는 최근 티오베(Tiobe) 인덱스에서 상위 10개 언어에 포함됐으며 현재 8위를 차지하고 있다.

놀라운 성공은 많은 찬사를 받았지만 신랄한 비판도 따랐다. 많은 경우 똑같은 기능을 두고 비난과 칭찬이 동시에 쏟아진다. 어떤 개발자가 좋아하는 고의 특성을 또 다른 개발자는 싫어한다.

고는 배우기 쉽다
고 언어에는 복잡한 기능이나 유별난 부분이 많지 않다. 고 설계자들은 의도적으로 빠르게 배울 수 있는 언어를 만들었다. 이런저런 부가 기능을 더하는 대신 구글에서 맡은 일을 수행하는 데 필요한 최소한의 기능만 갖추도록 했다. 이 말은 좋은 아이디어라고 다 받아들이는 것이 아니라 프로그래머에게 필요한 이상적인 비전에 집중했다는 의미다.

좋아하는 이유 : 단순한 언어일수록 새로운 프로그래머와 팀원이 배우기 쉽다. 마스터해야 할 기능이나 구조의 수가 적으므로 숙련된 프로그래머라면 하루만에 어느정도 익힐 수 있다. 기존 방식에 익숙하더라도 고의 새로운 트릭을 빠르게 가르칠 수 있으므로 프로젝트 인력을 꾸리기도 더 쉽다. 뿐만 아니라 이상한 곳에 불쑥 등장하는 낯설거나 알 수 없는 구조가 없으므로 코드를 읽기도 더 쉽다.

싫어하는 이유 : 단순함이 무조건 나쁘지는 않지만 문제는 빠진 부분이다. 마녀가 축소판 주문 서적을 선택할까? 쿼터백이 소수의 플레이만 포함된 플레이북을 선택할까? 일부 프로그래머는 고를 사용한 프로그래밍이 한 손을 뒤로 묶고 코딩을 하는 것과 같다고 느낀다. 다른 언어 설계자가 세상에 내놓은 온갖 좋은 기능이 고에는 없다. 간소함을 위한 큰 대가다.

고는 인기에 영합하지 않는다
고를 처음 개발한 사람들은 작은 언어를 만들기를 원했고, 그 목표를 위해 다른 언어에서 볼 수 있는 많은 인기 있는 기능을 뺐다. 고는 간소화된 언어다. 해야 할 일을 하지만 부가적인 기능은 없다.

좋아하는 이유 : 많은 개발자가 고의 간소함을 높게 평가한다. 능숙하게 다루기 위해 수십 가지의 기능에 대한 전문 지식을 습득하거나 유지할 것을 요구하지 않는다. 코드를 읽어 내려가다가 이전에는 본 적 없는 구조를 발견하게 될 일이 없다.

싫어하는 이유 : 사람마다 좋아하는 기능과 트릭이 있지만 고에서는 그 기능을 찾을 수 없을 가능성이 높다. 개발자들은 종종 고를 사용해서 할 수 있는 일을 코볼이나 자바, 또는 선호하는 다른 언어에서 한 줄로 할 수 있다고 불평한다.

C 기반의 구문
고를 만든 사람들은 유닉스에 깊게 뿌리를 둔 사람들이다. 고의 구문은 C, 또는 자바나 C#과 같이 C를 기원으로 하는 언어를 사용해본 사람들에게는 매우 친숙하다. 이들에겐 고의 중괄호와 유형(type) 특성이 익숙하다. 전통적인 C에서 거친 부분을 다듬고 몇 가지 세부 사항을 간소화해서 더 현대적으로 만들었지만 대체로 C에서 시작된 전통을 그대로 계승한다.

좋아하는 이유 : C 스타일과 함께 성장한 프로그래머는 고의 대부분을 직관적으로 이해한다. 구문을 매우 빠르게 익힐 수 있고 C 또는 자바에서 불편했던 부분을 고에서 어떻게 정리했는지 알아보며 시간을 보낼 수 있다. 좋아하지 않을 이유가 있을까?

싫어하는 이유 : 많은 면에서 파이썬은 C와 대조되는 특성을 갖도록 설계됐다. 코드 블록을 구분하기 위한 구두점 표시가 없고 유형은 의도적으로 동적이다. 파이선의 접근법을 좋아하는 사람이라면 고에서 마음에 들지 않는 부분을 많이 발견하게 된다. 이 관점에서 보면 고를 사용한 프로그래밍은 몇 단계 후퇴한 것처럼 느껴진다.

고에는 규칙이 (너무) 많다
고를 만든 사람들은 처음부터 구문뿐만 아니라 언어의 스타일과 사용 패턴도 정의하고자 했다. 예를 들어 고 코드의 들여쓰기에 관한 논쟁을 방지하기 위해 표준 서식 라이브러리를 마련했고, 관용구 목록을 선별해서 프로그래머에게 가장 좋은 관용구를 사용하도록 장려했다. 또한 사용되지 않는 변수, 순환 종속성 등 다른 언어에서 조금 못마땅히 여기는 정도인 몇 가지 습관을 아예 명시적으로 금지했다. 고의 빌드 프로세스는 코드베이스에서 이러한 요소를 발견할 때 멈추도록 프로그램되어 있다.

좋아하는 이유 : 고의 강력한 관용적 규칙은 코드의 높은 가독성을 보장한다. 또한 각 개인의 스타일을 형성할 옵션이나 이유 자체가 적기 때문에 스타일을 두고 팀에서 논쟁이 생길 일도 적다.

싫어하는 이유 : 이 같은 모든 부가적인 규칙과 규약은 족쇄처럼 느껴진다. 사용되지 않는 변수가 왜 문제인가? 컴파일러가 탐지할 수 있다면 귀찮게 하지 않고 알아서 없애 준다. 프로그래머가 조금의 자유를 얻는 것이 그렇게 나쁜 일인가?

고의 부가적인 오류 처리
현대 프로그래밍에는 대부분 오류 발생 시 코드가 취할 부가적인 경로 구축이 포함된다. 뭔가 잘못될 때까지 코드는 정상적으로 실행된다. 오류가 발생하면 복구해야 하는데, 잠시 멈출 수도 있고 실행을 완전히 중단할 수도 있다. 자동화된 시스템을 구축하기 위해서는 정상 작동 또는 실패하는 경우를 파악하기 위한 성찰이 필요하다.

고는 새로운 접근 방식을 취해서 프로그래머에게 동일한 함수에 두 개의 경로를 작성하도록 독려한다. 모범적인 고 코드는 일반적인 접근 방식과 오류 발생 시의 대처 방법을 모두 명시한다. 고 프로그래머는 “오류는 정규값”이라고 말하곤 한다. 같은 코드의 일부이기 때문이다. 고에는 프로그래머가 더 구체적인 형태의 오류를 생성한 다음 처리 방법을 명시할 수 있게 해주는 오류를 위한 별도의 유형 시스템까지 있다.

좋아하는 이유 : 고 접근 방식은 오류의 존재를 인정하고 프로그래머가 오류 처리를 위한 계획을 세우도록 이끈다. 따라서 프로그래머는 미리 계획하고 회복탄력성을 구축해 더 나은 소프트웨어를 만들 수 있다.

싫어하는 이유 : 불필요한 오류 처리는 고 함수를 더 거추장스럽고 이해하기 어렵게 한다. 딥 체인의 모든 함수가 동일한 오류에 대해 대체로 같은 작업을 수행하는 비슷한 코드를 포함해야 하는 경우가 많다. 자바, 파이썬과 같은 다른 언어는 프로그래머에게 오류를 “잡을” 체인 위의 특정 블록으로 오류를 “던지라”고 독려한다. 결과적으로 코드가 더 깔끔해진다.

표준 라이브러리
팀을 결속시켜주는 단순하지만 강력한 표준으로 설계된 것은 고의 구문만이 아니다. 표준 라이브러리에는 웹 기반 마이크로서비스 프로그래밍에서 일반적인 많은 주요 작업을 위한 지원이 포함된다. 입력과 출력 루틴은 저수준 네트워크 패킷 처리부터 시작해서 HTTPS 프로토콜 처리나 JSON 데이터 디코딩과 같이 더 복잡한 모든 작업을 처리한다. 전체 웹 서버를 코드 몇 줄로 설정할 수 있다. 라이브러리의 “net/http” 부문에 모두 포함돼 있기 때문이다.

좋아하는 이유 : 많은 표준 기능이 기본 라이브러리로 처리되면 누구도 자기만의 버전으로 코드를 쓰거나 어느 패키지 또는 써드 파티 라이브러리가 더 나은지를 두고 논쟁할 일이 없으므로 대부분의 코드가 더 읽기 쉬워진다.

싫어하는 이유 : 이와 같이 유용한 코드 모음에 대해 불평하긴 어렵지만 까다로운 사람들은 경쟁이 수요와 혁신을 나타내는 좋은 지표임을 지적한다. 일부 언어가 동일한 작업을 처리하는 여러 개의 패키지를 지원한다는 사실은 깊은 관심과 풍성한 문화를 나타낸다.

실행 파일 크기
고 팀의 목표 중 하나는 고 프로그램을 배포하기 쉽도록 하는 것이었는데, 모든 것을 하나의 실행 파일로 묶어 그 목표를 달성했다. 모든 고의 라이브러리 루틴이 표준 빌드에 포함돼 있으므로 모든 것을 즉시 실행할 수 있다.

시간이 지나면서 수십 MB에서 크게는 수백 MB에 이르는 실행 파일을 좋아하지 않는 개발자들이 불필요한 부분을 없애는 방법을 찾아냈다. 적절한 플래그를 설정하고 빌드 프로세스에 부가적인 단계를 포함해야 하므로 할 일이 조금 더 많지만 어쨌든 가능하다.

좋아하는 이유 : 디스크 공간은 저렴하다. 다양한 버전의 라이브러리가 설치되어 있는 경우 잘 모르는 여러 위치에 코드를 배포하는 것은 고역일 수 있다. 고 개발자들이 하나의 실행 파일을 빌드한 덕분에 엄청나게 많은 시간을 절약할 수 있다.

싫어하는 이유 : 디스크 안에 고 라이브러리의 복사본이 몇 개일까? 100개의 프로그램이 있다면 라이브러리 복사본도 100개가 있다는 뜻이다. 어느 시점이 되면 효율성이 문제가 된다. 물론 지금 디스크 공간의 비용이 어느 때보다 저렴하지만 메모리 대역폭과 캐싱은 실행 속도에서 여전히 주요 문제다.

든든한 후원자 구글
고랭은 구글에서 개발됐고, 구글은 지금도 여전히 고의 주 후원사 중 하나로 컴파일러와 툴체인의 대부분을 제공하고 있다. 구글 외에 고를 자바스크립트로 바꿔주는 트랜스파일러인 고퍼JS(GopherJS)도 있다. 그러나 고 개발 작업의 대부분은 구글 내부에서 이뤄진다.

좋아하는 이유 : 현대의 작업에서는 서버와 클라이언트를 위한 코드 작성이 차지하는 비중이 크다. 이는 구글 워크로드에서도 마찬가지로 큰 부분을 차지한다. 즉, 고가 구글에 유용하다면 같은 방식으로 작업하는 다른 사람들에게도 유용하다. 구글 엔지니어들이 자신의 마음에 들게 무언가를 만들었다면 비슷한 프로젝트를 하는 다른 사람들의 마음에도 들 수밖에 없다.

싫어하는 이유 : 사람들이 구글을 싫어하는 것이 아니다. 프로그래머는 중앙에 집중된 권한을 신뢰하지 않는다. 벤더 종속, 통제력 상실과 같은 문제는 기술 스택을 조율하는 누구에게나 심각한 문제다. 구글의 관대한 정책에도 불구하고, 특히 방대한 오픈소스 커뮤니티가 구축되어 있는 다른 언어를 선택할 수 있는 상황인 만큼 프로그래머는 여전히 구글에 대한 경계심을 늦추지 않고 있다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/topnews/343970#csidx9fbb313b8be26bc9dcc36bc52251869

인디오홀덤 | 메가슬롯 | ‘AI 기반’이라는 실리콘밸리의 새빨간 거짓말

인디오홀덤 | 메가슬롯 오래된 PPT 자료를 모두 살펴보고 ‘암호화’라는 단어를 ‘AI’로 바꿔줄 수 있나요?”

벤자민 슈워츠가 그린 뉴요커 만화에 나오는 이 캡션은 실리콘밸리의 새로운 ‘AI 워싱(AI Washing)’ 정신을 완벽하게 묘사한다.

인디오홀덤 | 메가슬롯 AI 워싱은 단순한 현상처럼 들리지만, 실제로는 복잡하고 다면적이다. 그리고 이 글을 읽는 모든 사람(기술 리더, 마케터, 제품 개발자, 사용자, 모든 유형의 IT 전문가)은 마케팅과 영업뿐 아니라 업계 주장에 근거한 기사에서 과장, 왜곡된 강조, 노골적인 거짓말을 쉽게 접할 수 있다는 점을 알아야 한다.

AI 워싱의 이해
AI 워싱은 기업이 홍보하는 제품이나 서비스에서 AI의 역할을 지나치게 강조하는 기만적인 마케팅 관행을 말한다. ‘워싱’이라는 표현은 1986년 환경운동가 제이 웨스터벨트가 만든 ‘그린워싱(greenwashing)’에서 유래했다. 그린워싱은 소비자 제품이 환경에 미치는 영향과 관계없이 친환경적인 것처럼 마케팅하는 것을 말한다.

인디오홀덤 | 메가슬롯 구식 알고리즘을 사용하는 제품은 AI인 것과 AI가 아닌 것에 대해 보편적으로 합의된 정의가 없다는 점을 이용해 ‘AI 기반’이라는 수식어를 붙인다. 스타트업은 공개적으로 사용 가능한 생성형 AI API에 플러그인하는 앱을 개발해 AI 앱으로 마케팅한다. 대형 AI 프로젝트는 종종 뒷단에서 일하는 사람에게 의존하곤 한다. 야심찬 AI 솔루션을 실제로 작동시킬 수 있는 유일한 방법이 사람뿐이기 때문이다.

마지막 부분에 대해 더 자세히 알아보자.

AI는 결국 사람이 만드는 기술
유통 대기업 아마존은 2016년부터 ‘저스트 워크 아웃(Just Walk Out)’ 기술을 적용한 참단 기술 매장 아마존 고(Amazon Go)와 아마존 프레시(Amazon Fresh)를 44곳에서 운영하고 있다.

필자는 아마존의 이 같은 이니셔티브에 대한 글을 2017년 처음 썼다. 소비자가 매장에 들어와 진열대에서 물건을 고른 다음, 계산대에서 직원을 마주하지 않고 바로 나갈 수 있는 매장이 아마존의 비전이었다. 이런 매장에서는 센서와 카메라가 AI 기반으로 누가 무엇을 구매했는지 파악하고 그에 따라 요금을 청구한다. 모든 구매 경험이 계산 없이 이뤄진다. 절도처럼 느껴지지만, 합법적인 구매 절차다.

이런 시스템은 첨단 컴퓨터 비전으로 구동돼 고객과 고객이 집어 든 물건을 감시한다. 선반의 센서는 카메라가 감지한 품목의 종류와 개수를 확인해 꺼낸 품목의 무게를 전달하며, RFID 태그가 부착된 품목 정보도 전달된다. 고급 ML 알고리즘이 카메라와 센서의 데이터를 처리해 제품을 식별하고 특정 쇼핑객과 연결한다. 전자 출입 게이트는 누가 언제 출입하는지 파악한다. 이런 알고리즘은 수백만 개의 AI 생성 이미지와 동영상을 학습해 제품, 사람 행동 방식과 동작을 인식한다.

아마존은 7년 동안 저스트 워크 아웃 기술의 구성 요소에 대해 열심히 이야기해 왔다. 하지만 이 기능을 실제로 작동시키기 위해 고용된 1,000여 명의 인력에 대해서는 언급하기를 꺼려했고, 언론 보도가 나온 후에야 이런 직원들의 존재를 인정했다. 그 후에도 아마존은 이 직원들이 영상을 검토하지 않았다고만 말하며 구체적인 역할에 대해서는 함구했다.

1,000여 명의 직원이 매장 44곳을 모니터링하고 지원(보고서에 따르면 주문의 3/4을 확인)하고 있음에도 불구하고, 저스트 워크 아웃 기술은 영수증 발급 지연, 잘못된 주문 관리, 높은 운영 비용 등의 문제에 봉착했다. 올해 아마존은 주요 매장에서 저스트 워크 아웃 기술을 단계적으로 폐지하기로 했지만, 고객사 대상으로는 여전히 서비스를 제공하고 있다.

‘AI 뒤에 숨은 인간’을 보여주는 또 다른 예는 자율 주행 자동차 세계다. 알파벳의 웨이모(Waymo)는 직원들이 카메라를 통해 자동차를 모니터링하고 문제가 발생하면 원격으로 개입하는 NASA 스타일의 지휘 센터를 운영하고 있다. 제너럴 모터스 산하 로보택시 기업 크루즈(Cruise)는 자율 주행 택시가 평균 6~8km마다 사람의 도움이 필요하며, 각 원격 제어 세션은 평균 3초 동안 지속한다고 인정했다.

다른 자율 주행 기업들은 원격 조종사의 도움을 더 많이 받고 있다. 베이(Vay)라는 독일 기업이 최근 라스베이거스에서 시작한 원격 발렛 파킹 서비스가 대표적인 예다. 고객이 원하는 곳으로 원격으로 차를 가져다주고, 운전자는 원하는 곳으로 차를 운전한다. 목적지에 도착해 차에서 내리면 원격 근무자가 대신 주차한다.

아마존의 상점과 자율 주행 자동차는 널리 퍼진 AI 워싱을 보여주는 2가지 예다.

AI 워싱이 발생하는 이유
AI 시스템을 구축하는 고액 연봉의 고급 기술자들은 AI가 매우 복잡한 문제를 해결할 수 있다고 믿는다. 물론 이론적으로는 가능하다. 이들은 상사에게 ‘그렇게 할 수 있다’라고 말한다. 이 말은 들은 리더들은 이사회에 ‘그렇게 할 수 있다’라고 말한다. 회사의 최고 경영진은 투자자들에게 ‘그렇게 할 수 있다’라고 말한다. 마지막으로 기업은 대중에게 ‘할 수 있다’라고 한다.

하지만 한 가지 작은 문제가 있다.

대부분 기업은 거창한 주장에 대해 책임감을 느끼기 때문에 제품이나 서비스가 결정을 내리고 문제를 해결하며 ‘마법’을 부리는 데 있어 커튼 뒤의 사람에 얼마나 의존하는지를 숨긴다. 뻔뻔한 기업일수록 AI의 능력이 자신이 주장하거나 믿었던 것만큼 뛰어나지 않다는 증거에 굴하지 않고 계속해서 자신의 주장을 되풀이한다. 이와 관련해 테슬라 CEO 일론 머스크가 떠오른다.

2016년 10월, 머스크는 2017년 말까지 테슬라가 로스앤젤레스에서 뉴욕까지 완전 자율 주행을 시연할 것이라고 말했다.
2017년 4월에는 약 2년 후에는 운전자가 차량이 스스로 운전하는 동안 차 안에서 잠을 잘 수 있을 것이라고 전망했다.
2018년, 머스크는 테슬라의 완전한 자율 주행에 대한 약속을 2019년 말로 앞당겼다.
2019년 2월 머스크는 “올해 안에” 완전 자율 주행 실현을 약속했다.
2020년에는 그해 연말까지 테슬라가 100만 대 이상의 자율 주행 로보택시를 도로에 배치할 것이라고 주장했다.
올해 역시 완전 자율 주행 테슬라가 “올해 말”에 실현될 수 있다고 말했다.

그런 일은 일어나지 않을 것이다. 머스크는 자신과 고객을 속이고 있는 AI 워싱의 대표주자다.

AI 워싱의 진짜 문제
누적되는 AI 워싱은 대중과 기술 산업 모두를 잘못된 길로 인도할 수 있다. AI 워싱은 AI가 할 수 없는 일을 할 수 있다고 착각하게 만든다. AI가 모든 문제에 대한 만능 해결책이라고 생각하게 만들거나, 세계관에 따라서는 디스토피아로 가는 미끄러운 경사라고 생각하게 만든다.

AI 워싱은 품질보다는 ‘마법’에 초점을 맞춘 열등한 솔루션에 금전적인 인센티브를 제공한다. 개를 목욕시키는 호스가 “AI로 구동된다”라고 주장한다고 해서 개가 더 깨끗해지는 것은 아니다. 단지 비싼 호스가 될 뿐이다.

왜곡된 투자를 이끌어내기도 한다. 오늘날 실리콘밸리의 투자는 실제 AI와 AI 워싱 솔루션에 완전히 사로잡혀 있다. 현명한 투자자조차도 구매자의 순진함 덕분에 AI 이야기가 시장에서 팔릴 것이라는 생각에 AI 워싱의 과장이나 거짓말을 간과할 수 있다.

가장 큰 문제는 업계의 과대광고가 아니라 자기기만이다. AI 솔루션 공급업체는 인간의 도움이 수치스러운 일이라고 생각하지만, 필자는 인간의 개입이 안도감으로 받아들여질 것이라고 생각한다.

대중은 쇼핑과 운전 경험에 사람이 관여하기를 원한다. 우리에게 필요한 것은 기계가 아닌 사람이다. 지금 이 순간에도 AI가 생성한 쓰레기는 기괴하고 때로는 끔찍한 이미지와 함께 엉뚱한 산문과 거짓말로 넘쳐나고 있다. 구글은 검색 엔진을 답변 엔진으로 대체하는 데 급급해 ‘피자에 접착제를 발라야 한다’라는 결과를 만들고 있다.

대중이 진정으로 원하는 것은 사람이 만든 콘텐츠를 찾아주는 검색 엔진, 적어도 사람이 만든 콘텐츠를 선호하고 AI가 만든 콘텐츠에 레이블을 붙이는 페이지랭크(PageRank) 시스템이다.

AI 워싱 현상은 착각에 기반한다. 사람은 기계가 모든 것을 만들고 통제하기를 바란다는 착각, AI를 추가하면 무언가가 자동으로 개선될 것이라는 착각, 사람을 고용하는 것이 기술의 실패를 의미한다는 착각이다. 실제로는 그렇지 않다.

AI에 대한 망상은 이쯤에서 충분하다. 판매자는 AI에 대해 진실을 말해야 하며, 구매자는 돈을 지불하는 제품과 서비스에 포함된 AI가 실제로 유용한 기능을 수행한다는 증거를 요구해야 한다. 기술 업계, 기술 고객 커뮤니티, 기술 언론에 종사하는 모두를 대표해 필자는 AI에 대한 가스라이팅을 멈춰달라고 말하고 싶다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/opinion/343081#csidx45dfd3d8640d2e1babda5d17683d233

인디오홀덤 | 슬롯포인트게임 개발자가 고 언어를 좋아하는 8가지 이유, 그리고 싫어하는 8가지 이유

인디오홀덤 | 슬롯포인트게임 2007년, 구글의 몇몇 프로그래머가 소프트웨어를 만들기 위한 여러 옵션을 살펴봤지만 마음에 드는 것을 찾을 수 없었다. 이들은 월드 와이드 웹을 위한 데이터를 끊임없이 저장하고 전송하는 수백만 라인의 코드를 관리해야 했고 이 코드는 전 세계의 네트워크에서 수백만 개에 이르는 연결을 처리해야 했다. 데이터 경로에는 경합과 동시성에 따른 문제가 가득했다.

기존 프로그래밍 언어는 별로 도움이 되지 않았다. 기존 언어는 게임, 데스크톱 관리, 또는 웹 브라우저가 등장하기 전부터 존재했던 다른 일반적인 작업을 관리하기 위한 용도로 만들어졌다. 이러한 언어의 매끄럽지 못한 부분이 마음에 들지 않았던 구글 코더는 더 나은 방법을 고민하기 시작했다. 구글에 필요한 모든 안전과 보안을 충족하면서 단 몇 줄의 코드로 I/O 작업을 처리할 수 있는 방법이 없을까?

이 질문에 대한 답은 ‘없다’였다. 그래서 표면적으로 C 또는 자바와 비슷한 간단한 언어인 고랭(Golang)을 만들었다. 첫 공개 버전은 2009년에, 첫 1.0 버전은 2012년에 출시됐다. 구글은 지금도 고 언어에 계속 투자하고 있다. 기사 작성 시점에 최신 안정화 버전은 1.22.5다.

구글 내에서 고 언어는 인프라의 많은 부분을 움직인다. 구글 외부의 많은 프로그래머도 고를 채택했다. 고는 최근 티오베(Tiobe) 인덱스에서 상위 10개 언어에 포함됐으며 현재 8위를 차지하고 있다.

인디오홀덤 | 슬롯포인트게임 놀라운 성공은 많은 찬사를 받았지만 신랄한 비판도 따랐다. 많은 경우 똑같은 기능을 두고 비난과 칭찬이 동시에 쏟아진다. 어떤 개발자가 좋아하는 고의 특성을 또 다른 개발자는 싫어한다.

고는 배우기 쉽다
고 언어에는 복잡한 기능이나 유별난 부분이 많지 않다. 고 설계자들은 의도적으로 빠르게 배울 수 있는 언어를 만들었다. 이런저런 부가 기능을 더하는 대신 구글에서 맡은 일을 수행하는 데 필요한 최소한의 기능만 갖추도록 했다. 이 말은 좋은 아이디어라고 다 받아들이는 것이 아니라 프로그래머에게 필요한 이상적인 비전에 집중했다는 의미다.

좋아하는 이유 : 단순한 언어일수록 새로운 프로그래머와 팀원이 배우기 쉽다. 마스터해야 할 기능이나 구조의 수가 적으므로 숙련된 프로그래머라면 하루만에 어느정도 익힐 수 있다. 기존 방식에 익숙하더라도 고의 새로운 트릭을 빠르게 가르칠 수 있으므로 프로젝트 인력을 꾸리기도 더 쉽다. 뿐만 아니라 이상한 곳에 불쑥 등장하는 낯설거나 알 수 없는 구조가 없으므로 코드를 읽기도 더 쉽다.

싫어하는 이유 : 단순함이 무조건 나쁘지는 않지만 문제는 빠진 부분이다. 마녀가 축소판 주문 서적을 선택할까? 쿼터백이 소수의 플레이만 포함된 플레이북을 선택할까? 일부 프로그래머는 고를 사용한 프로그래밍이 한 손을 뒤로 묶고 코딩을 하는 것과 같다고 느낀다. 다른 언어 설계자가 세상에 내놓은 온갖 좋은 기능이 고에는 없다. 간소함을 위한 큰 대가다.

고는 인기에 영합하지 않는다
고를 처음 개발한 사람들은 작은 언어를 만들기를 원했고, 그 목표를 위해 다른 언어에서 볼 수 있는 많은 인기 있는 기능을 뺐다. 고는 간소화된 언어다. 해야 할 일을 하지만 부가적인 기능은 없다.

좋아하는 이유 : 많은 개발자가 고의 간소함을 높게 평가한다. 능숙하게 다루기 위해 수십 가지의 기능에 대한 전문 지식을 습득하거나 유지할 것을 요구하지 않는다. 코드를 읽어 내려가다가 이전에는 본 적 없는 구조를 발견하게 될 일이 없다.

싫어하는 이유 : 사람마다 좋아하는 기능과 트릭이 있지만 고에서는 그 기능을 찾을 수 없을 가능성이 높다. 개발자들은 종종 고를 사용해서 할 수 있는 일을 코볼이나 자바, 또는 선호하는 다른 언어에서 한 줄로 할 수 있다고 불평한다.

C 기반의 구문
고를 만든 사람들은 유닉스에 깊게 뿌리를 둔 사람들이다. 고의 구문은 C, 또는 자바나 C#과 같이 C를 기원으로 하는 언어를 사용해본 사람들에게는 매우 친숙하다. 이들에겐 고의 중괄호와 유형(type) 특성이 익숙하다. 전통적인 C에서 거친 부분을 다듬고 몇 가지 세부 사항을 간소화해서 더 현대적으로 만들었지만 대체로 C에서 시작된 전통을 그대로 계승한다.

좋아하는 이유 : C 스타일과 함께 성장한 프로그래머는 고의 대부분을 직관적으로 이해한다. 구문을 매우 빠르게 익힐 수 있고 C 또는 자바에서 불편했던 부분을 고에서 어떻게 정리했는지 알아보며 시간을 보낼 수 있다. 좋아하지 않을 이유가 있을까?

싫어하는 이유 : 많은 면에서 파이썬은 C와 대조되는 특성을 갖도록 설계됐다. 코드 블록을 구분하기 위한 구두점 표시가 없고 유형은 의도적으로 동적이다. 파이선의 접근법을 좋아하는 사람이라면 고에서 마음에 들지 않는 부분을 많이 발견하게 된다. 이 관점에서 보면 고를 사용한 프로그래밍은 몇 단계 후퇴한 것처럼 느껴진다.

고에는 규칙이 (너무) 많다
고를 만든 사람들은 처음부터 구문뿐만 아니라 언어의 스타일과 사용 패턴도 정의하고자 했다. 예를 들어 고 코드의 들여쓰기에 관한 논쟁을 방지하기 위해 표준 서식 라이브러리를 마련했고, 관용구 목록을 선별해서 프로그래머에게 가장 좋은 관용구를 사용하도록 장려했다. 또한 사용되지 않는 변수, 순환 종속성 등 다른 언어에서 조금 못마땅히 여기는 정도인 몇 가지 습관을 아예 명시적으로 금지했다. 고의 빌드 프로세스는 코드베이스에서 이러한 요소를 발견할 때 멈추도록 프로그램되어 있다.

좋아하는 이유 : 고의 강력한 관용적 규칙은 코드의 높은 가독성을 보장한다. 또한 각 개인의 스타일을 형성할 옵션이나 이유 자체가 적기 때문에 스타일을 두고 팀에서 논쟁이 생길 일도 적다.

싫어하는 이유 : 이 같은 모든 부가적인 규칙과 규약은 족쇄처럼 느껴진다. 사용되지 않는 변수가 왜 문제인가? 컴파일러가 탐지할 수 있다면 귀찮게 하지 않고 알아서 없애 준다. 프로그래머가 조금의 자유를 얻는 것이 그렇게 나쁜 일인가?

고의 부가적인 오류 처리
현대 프로그래밍에는 대부분 오류 발생 시 코드가 취할 부가적인 경로 구축이 포함된다. 뭔가 잘못될 때까지 코드는 정상적으로 실행된다. 오류가 발생하면 복구해야 하는데, 잠시 멈출 수도 있고 실행을 완전히 중단할 수도 있다. 자동화된 시스템을 구축하기 위해서는 정상 작동 또는 실패하는 경우를 파악하기 위한 성찰이 필요하다.

고는 새로운 접근 방식을 취해서 프로그래머에게 동일한 함수에 두 개의 경로를 작성하도록 독려한다. 모범적인 고 코드는 일반적인 접근 방식과 오류 발생 시의 대처 방법을 모두 명시한다. 고 프로그래머는 “오류는 정규값”이라고 말하곤 한다. 같은 코드의 일부이기 때문이다. 고에는 프로그래머가 더 구체적인 형태의 오류를 생성한 다음 처리 방법을 명시할 수 있게 해주는 오류를 위한 별도의 유형 시스템까지 있다.

좋아하는 이유 : 고 접근 방식은 오류의 존재를 인정하고 프로그래머가 오류 처리를 위한 계획을 세우도록 이끈다. 따라서 프로그래머는 미리 계획하고 회복탄력성을 구축해 더 나은 소프트웨어를 만들 수 있다.

싫어하는 이유 : 불필요한 오류 처리는 고 함수를 더 거추장스럽고 이해하기 어렵게 한다. 딥 체인의 모든 함수가 동일한 오류에 대해 대체로 같은 작업을 수행하는 비슷한 코드를 포함해야 하는 경우가 많다. 자바, 파이썬과 같은 다른 언어는 프로그래머에게 오류를 “잡을” 체인 위의 특정 블록으로 오류를 “던지라”고 독려한다. 결과적으로 코드가 더 깔끔해진다.

표준 라이브러리
팀을 결속시켜주는 단순하지만 강력한 표준으로 설계된 것은 고의 구문만이 아니다. 표준 라이브러리에는 웹 기반 마이크로서비스 프로그래밍에서 일반적인 많은 주요 작업을 위한 지원이 포함된다. 입력과 출력 루틴은 저수준 네트워크 패킷 처리부터 시작해서 HTTPS 프로토콜 처리나 JSON 데이터 디코딩과 같이 더 복잡한 모든 작업을 처리한다. 전체 웹 서버를 코드 몇 줄로 설정할 수 있다. 라이브러리의 “net/http” 부문에 모두 포함돼 있기 때문이다.

좋아하는 이유 : 많은 표준 기능이 기본 라이브러리로 처리되면 누구도 자기만의 버전으로 코드를 쓰거나 어느 패키지 또는 써드 파티 라이브러리가 더 나은지를 두고 논쟁할 일이 없으므로 대부분의 코드가 더 읽기 쉬워진다.

싫어하는 이유 : 이와 같이 유용한 코드 모음에 대해 불평하긴 어렵지만 까다로운 사람들은 경쟁이 수요와 혁신을 나타내는 좋은 지표임을 지적한다. 일부 언어가 동일한 작업을 처리하는 여러 개의 패키지를 지원한다는 사실은 깊은 관심과 풍성한 문화를 나타낸다.

실행 파일 크기
고 팀의 목표 중 하나는 고 프로그램을 배포하기 쉽도록 하는 것이었는데, 모든 것을 하나의 실행 파일로 묶어 그 목표를 달성했다. 모든 고의 라이브러리 루틴이 표준 빌드에 포함돼 있으므로 모든 것을 즉시 실행할 수 있다.

시간이 지나면서 수십 MB에서 크게는 수백 MB에 이르는 실행 파일을 좋아하지 않는 개발자들이 불필요한 부분을 없애는 방법을 찾아냈다. 적절한 플래그를 설정하고 빌드 프로세스에 부가적인 단계를 포함해야 하므로 할 일이 조금 더 많지만 어쨌든 가능하다.

좋아하는 이유 : 디스크 공간은 저렴하다. 다양한 버전의 라이브러리가 설치되어 있는 경우 잘 모르는 여러 위치에 코드를 배포하는 것은 고역일 수 있다. 고 개발자들이 하나의 실행 파일을 빌드한 덕분에 엄청나게 많은 시간을 절약할 수 있다.

싫어하는 이유 : 디스크 안에 고 라이브러리의 복사본이 몇 개일까? 100개의 프로그램이 있다면 라이브러리 복사본도 100개가 있다는 뜻이다. 어느 시점이 되면 효율성이 문제가 된다. 물론 지금 디스크 공간의 비용이 어느 때보다 저렴하지만 메모리 대역폭과 캐싱은 실행 속도에서 여전히 주요 문제다.

든든한 후원자 구글
고랭은 구글에서 개발됐고, 구글은 지금도 여전히 고의 주 후원사 중 하나로 컴파일러와 툴체인의 대부분을 제공하고 있다. 구글 외에 고를 자바스크립트로 바꿔주는 트랜스파일러인 고퍼JS(GopherJS)도 있다. 그러나 고 개발 작업의 대부분은 구글 내부에서 이뤄진다.

좋아하는 이유 : 현대의 작업에서는 서버와 클라이언트를 위한 코드 작성이 차지하는 비중이 크다. 이는 구글 워크로드에서도 마찬가지로 큰 부분을 차지한다. 즉, 고가 구글에 유용하다면 같은 방식으로 작업하는 다른 사람들에게도 유용하다. 구글 엔지니어들이 자신의 마음에 들게 무언가를 만들었다면 비슷한 프로젝트를 하는 다른 사람들의 마음에도 들 수밖에 없다.

싫어하는 이유 : 사람들이 구글을 싫어하는 것이 아니다. 프로그래머는 중앙에 집중된 권한을 신뢰하지 않는다. 벤더 종속, 통제력 상실과 같은 문제는 기술 스택을 조율하는 누구에게나 심각한 문제다. 구글의 관대한 정책에도 불구하고, 특히 방대한 오픈소스 커뮤니티가 구축되어 있는 다른 언어를 선택할 수 있는 상황인 만큼 프로그래머는 여전히 구글에 대한 경계심을 늦추지 않고 있다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/topnews/343970#csidx8637336715261388f048ef08f7791ae

“인디오홀덤 | 오마하게임 API를 위한 유연한 쿼리 언어” 그래프QL 제대로 시작하기

인디오홀덤 | 오마하게임 페이스북이 개발해 모두가 사용할 수 있도록 오픈소스 표준으로 공개한 그래프QL(GraphQL)은 REST API의 대안을 표방한다. 그래프QL은 REST와 마찬가지로 웹 기반 API를 만들고 소비하는 방법을 제공하지만, 쿼리와 반환된 데이터는 형식 스키마와 유형 시스템을 사용해 일관성을 보장한다.

여기서는 그래프QL API 설계와 구현의 기본 사항을 살펴보고 여러 가지 주요 고려 사항과 이 과정에서 내리게 되는 의사 결정에 대해 알아본다.

인디오홀덤 | 오마하게임 그래프QL 언어와 프레임워크
웹 애플리케이션 API로 그래프QL을 사용할 계획이라면 이미 사용 중인 언어 및 데이터 구성요소가 이를 지원할 가능성이 높다. 그래프QL 라이브러리는 프로덕션에 사용되는 거의 모든 주요 언어에 제공된다. 클라이언트는 C#/닷넷, 고, 자바, 안드로이드, 자바스크립트, 스위프트/오브젝티브 C, 파이썬용으로 제공되며 서버 라이브러리는 그보다 더욱 광범위하게 지원된다.

완전히 새로 시작한다 해도 다른 프로젝트에서 가장 익숙한 언어와 런타임, 데이터 계층을 선택하는 것이 최선이다. 그래프QL은 서버나 클라이언트에 많은 제약을 두지 않으며 데이터베이스를 가리지 않는다. 다만 데이터 계층에 따라 얼마간의 수동 통합이 필요할 수는 있다. (이 부분에 대해서는 다음 섹션에서 더 자세히 살펴본다.)

인디오홀덤 | 오마하게임 여기서는 참고용으로 그래프QL의 파이썬 구현을 사용한다. 개념과 기능은 다른 언어에서도 대체로 동일하다.

그래프QL의 데이터 쿼리 스키마
그래프QL은 다양한 계층 구조의 강한 유형의 필드에서 구성된 쿼리를 받는다. 그래프QL API를 만들 때 가장 잘 생각해야 하는 부분은 쿼리에 제공할 스키마다.

많은 경우 쿼리 필드를 기반 데이터 소스에 일 대 일로 매핑해서 쿼리를 위해 데이터베이스(또는 다른 데이터 소스)의 모든 관련 필드를 노출할 수 있다. 그래프QL 쿼리는 REST 쿼리에 비해 훨씬 더 제약이 없고 다양할 수 있으므로 처음부터 쿼리 가능한 필드와 이러한 필드를 데이터베이스에 매핑할 계획을 세워야 한다.

예를 들어, 영화를 위한 데이터베이스 테이블이 있고 이 테이블에 title과 year(정수)가 있다면 다음과 같은 그래프QL을 사용할 수 있다.

type Character {
title: String!
year: Int
}

String 뒤에 나오는 !는 필드가 필수임을 의미하므로, 이 쿼리를 수행하려면 최소한 제목은 필요할 것이다.

또한 그래프QL을 통해 노출하는 필드가 기반 데이터와 정확히 일치하는 유형을 사용하도록 해야 한다. 예를 들어 그래프QL에는 기본 “date” 또는 “datetime” 데이터 유형이 없다. 사용 가능한 구현이 매우 다양하다는 것이 주된 이유다. 날짜 범위에 따른 검색을 허용하려면 API를 통해 가져온 날짜의 서식을 강제하고, 쿼리할 때 이러한 날짜 요청이 백엔드 데이터베이스에 적절한 유형으로 변환되도록 해야 한다.

사용 중인 프레임워크에 따라 이 작업이 이미 이뤄졌을 수도 있다. 파이썬에서 인기 있는 그래프QL 라이브러리인 그래핀(Graphene)은 ISO-8601 형식의 날짜-시간 값을 유형 네이티브로 제공하므로 직접 처리할 필요가 없다.

인디오홀덤 | 오마하게임 데이터 집합에 많은 필드가 있다면 복잡한 유형 강제가 불필요한 최소 기능 하위 집합을 노출하는 것부터 시작한다(예를 들어, 간단한 문자열 또는 숫자 쿼리). 그런 다음 사용 중인 그래프QL 커넥터를 통해 쿼리를 구현하는 방법을 파악하면서 사용 가능한 필드를 점진적으로 확대할 수 있다.

그래프QL 데이터 저장과 검색
백엔드에 데이터를 저장하고 검색하려면 일반적으로 사용 중인 언어의 그래프QL 라이브러리에서 지원하는 미들웨어를 사용한다.

많은 경우 일반적인 애플리케이션 프레임워크의 데이터 계층을 통해 그래프QL이 이 작업을 수행하도록 할 수 있다. 예를 들어 파이썬의 그래프QL용 그래핀 라이브러리는 장고(Django) 웹 프레임워크와 함께 장고의 내장된 ORM을 지원한다. 그래핀은 SQL알케미(SQLAlchemy) ORM을 지원하며, 인기 있는 스탈렛(Starlette)과 패스트API(FastAPI) 프레임워크에 대한 지원도 추가됐다. 또한 구글 앱 엔진의 데이터 커넥터, 릴레이 자바스크립트 프레임워크(리액트에 사용됨)와 상호운용이 가능하다.

이런 구성요소에 의해 기술되지 않은 데이터 계층을 사용하는 경우 그래핀의 미들웨어와 DataLoader 객체를 사용해 빈 틈을 채울 수 있다. 이 둘은 데이터 계층에 필요한 통합을 수동으로 연결할 수 있게 해준다. DataLoader를 사용하면 관련 데이터에 대한 여러 개의 통시 요청을 합쳐서 백엔드를 오가는 횟수를 줄일 수 있다.

한편 이 중 어느 것도 애플리케이션의 아무 계층에서 직접 캐싱을 수행하는 것을 막지는 않는다. 예를 들어 반환하는 응답은 프록시를 사용하여 캐시할 수 있고, 백엔드 데이터는 멤캐시드(Memcached) 또는 레디스를 사용해 캐시할 수 있다. 다만 데이터가 변경될 때마다 이러한 캐시를 비우는 작업도 직접 챙겨야 한다.

인디오홀덤 | 오마하게임 그래프QL 쿼리와 뮤테이션
그래프QL은 “뮤테이션(mutation) 쿼리”라고 하는 특정 쿼리 형식을 사용해서 데이터 집합에서 요소를 생성, 업데이트하거나 삭제한다. 이러한 쿼리가 작동하는 방식, 즉 어느 쿼리를 허용하고 어느 필드를 요구할지 뿐만 아니라 뮤테이션 후 쿼리에서 어떤 데이터를 반환할지에 대해서도 잠시 생각해 보자.

뮤테이션 쿼리를 설계할 때 원하는 수만큼의 출력 필드를 반환하도록 허용할 수 있다. 그러나 응답 객체를 한두 계층 이상으로 중첩하는 것은 대체로 좋은 생각이 아니다. 그렇게 하면 쿼리 자체를 볼 때, 그리고 결과를 처리하기 위한 코드를 작성할 때 모두 결과를 구문 분석하기가 어렵기 때문이다.

또 다른 중요한 주의 사항은 오랜 REST API 설계 습관이 뮤테이션 쿼리 작성 방식에 영향을 미치지 않도록 하는 것이다. 예를 들어 동일한 객체에 대한 여러 종류의 변경을 처리하기 위해 여러 뮤테이션 쿼리를 만드는 대신(REST에서 일반적인 패턴) 하나의 뮤테이션 쿼리로 통합할 수 있다. 이를 위한 한 가지 방법은 이 예제의 “upvote/downvote”와 같이 별도의 비선택적 필드를 사용해서 가능한 각 작업을 기록하는 것이다.

또 다른 방법은 값 필드와 열거형을 함께 사용해서 이 값으로 원하는 동작을 기술하는 것이다. 열거형의 한 가지 큰 장점은 모호하지 않은 명확성이다. 즉, 열거형을 사용해서 정확하게 의도를 반영할 수 있으므로 고도의 자체 문서화가 가능하다. 어느 언어든 언어의 그래프QL 라이브러리는 대부분 언어 자체의 개념 구현과 일치하는 열거형을 사용할 방법을 제공한다. 예를 들어 파이썬용 그래핀의 그래프QL 열거형은 파이썬 표준 라이브러리 enum 클래스와 상당히 비슷해 보일 수 있다.

그래프QL 캐싱과 성능 가속화
내부적으로 그래프QL 쿼리는 다른 쿼리와 마찬가지로 데이터를 폴링하고 검색한다. 즉, API 쿼리 속도를 높이기 위해 사용되는 많은 방법을 똑같이 사용해서 가속화할 수 있다.

캐싱 : 데이터베이스를 백엔드로 두거나 프론트엔드에서 데이터를 반환하는 모든 서비스는 두 끝단 모두에서 캐싱을 통한 이점을 얻을 수 있다. 단, 이러한 캐시의 만료에 대한 책임은 여러분 각자에게 있음을 유의해야 한다. 따라서 앞서 그래핀용으로 설명한 것과 같은 그래프QL 프레임워크의 미들웨어 후크를 사용해서 만료를 트리거해야 할 수 있다. 가능한 고유 식별자를 사용해서 클라이언트 측 캐싱을 지원하는 것이 좋다.
커서와 페이지 매김 : 클라이언트와 서버의 과부하를 방지하기 위해서는 요청에 한 번에 반환하는 레코드의 수에 대한 기본 상한선이 필요하다. 또한 클라이언트가 반환할 레코드의 최대 수와 요청할 레코드의 “페이지”를 명시적으로 기술하도록 허용하는 것이 좋다. 공식 그래프QL 문서에서 그래프QL 요청 형식에 페이지 매김 메타포를 통합하는 방법에 관한 몇 가지 유용한 팁을 볼 수 있다.

그래프QL 툴
다양한 언어용으로 제공되는 라이브러리 외에, 그래프QL에는 클라이언트, 서버, 스키마, 쿼리 처리 계층을 더 쉽게 개발하기 위한 다음과 같은 다양한 네이티브 및 서드파티 툴이 있다.

인디오홀덤 | 오마하게임 아폴로 그래프QL(Apollo GraphQL)은 그래프QL 클라이언트와 그래프QL 서버를 포함한 그래프QL을 위한 오픈소스 툴을 만드는 데 전력한다. 또한 아플로 그래프QL은 그래프QL 스키마를 생성 및 모킹하고 여러 API를 하나의 API로 “이어 붙이기” 위한 일련의 유틸리티인 그래프QL 툴도 유지관리하면서 여러 API 엔드포인트를 통합하고 관리 편의성을 높인다는 그래프QL의 목표를 추구한다.
기존 스웨거(Swagger) 생성 API를 그래프QL로 이식하려는 경우 스웨거2그래프QL(Swagger2GraphQL)을 사용하면 된다. 또한 이 툴은 레거시 스웨거 생성 API를 함께 유지하도록 허용하므로 전환 기간 동안 두 가지 표준을 모두 사용할 수 있다.
마지막으로, 페이스북 자체 그래프QL 그룹도 몇 가지 주목할 만한 툴을 만들었다. 그래피QL(GraphiQL)은 그래프QL 쿼리를 생성하기 위한 브라우저 내 IDE다. 내부적으로 또는 공개 솔루션으로 사용 가능하다. 그래프QL의 자바스크립트 구현인 그래프QL 오버 HTTP(GraphQL-over-HTTP) 서버 및 클라이언트 제품군, 그리고 IDE를 위한 그래프QL 언어 서비스도 있다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/topnews/343305#csidxd2c0d78f2d7c483ae707bb313070268

인디오홀덤 | 슬롯게임 코파일럿 런타임 백터 검색의 핵심” DiskANN 기초지식 다지기

인디오홀덤 | 슬롯게임 윈도우용 마이크로소프트 코파일럿 런타임(Copilot Runtime) 엣지 AI 개발 플랫폼의 주요 구성요소 중 하나는 DiskANN(Disk Accelerated Nearest Neighbors)이라는 새로운 벡터 검색 기술이다. 마이크로소프트 리서치의 장기 프로젝트를 기반으로 하는 DiskANN은 애플리케이션 내에 벡터 인덱스를 구축하고 관리하는 방법이다. 인메모리 및 디스크 저장을 함께 사용해서 메모리 내의 양자화된 벡터 그래프를 디스크의 고정밀 그래프에 매핑한다.

DiskANN이란?
정확히 똑같다고는 할 수 없지만 DiskANN은 SQL라이트와 같은 툴의 벡터 인덱스 버전이라고 생각하면 된다. 코드에 추가하면 코파일럿 런타임의 파이 실리카(Phi Silica)와 같은 SLM(Small Language Model)의 시맨틱 임베딩으로 구성된 벡터 인덱스를 간편하게 검색할 수 있다.

인디오홀덤 | 슬롯게임 DiskANN은 데이터베이스가 아니라, 벡터 검색을 지원하도록 설계되지 않은 다른 저장소에 벡터 인덱스를 추가하기 위한 툴로 제공되는 일련의 알고리즘이라는 것을 이해하는 것이 중요하다. 따라서 DiskANN은 관계형이든 NoSQL 키 값 저장소든 상관없이 다른 임베디드 저장소의 이상적인 동반자라고 할 수 있다.

인메모리 및 디스크 저장을 위한 요구사항은 이전 윈도우 기본 메모리보다 2배 많은 메모리와 더 크고 빠른 SSD가 필요한 코파일럿+ PC의 하드웨어 사양을 이해하는 데 도움이 된다. CPU 요구사항은 다른 벡터 검색 알고리즘에 비해 낮아서, 애저 서비스에서 대규모로 구현할 경우 기존 방법에서 사용하는 CPU의 5%만 있으면 된다.

인덱싱되는 데이터를 위한 별도의 저장소가 필요하다. 인덱스와 임베딩 소스, 두 가지에 별도의 저장소를 둘 경우 그 자체의 문제점도 있다. 개인 식별 정보를 비롯한 규제 대상 데이터를 다루는 경우 소스 데이터의 암호화를 간과하면 안 된다. 이로 인해 쿼리에 오버헤드가 추가될 수 있는데, 흥미로운 점은 마이크로소프트가 보관 중인 데이터와 사용 중인 데이터를 모두 암호화해서 PII 유출 또는 맬웨어에 의한 프롬프트 조작 위험을 낮출 수 있는 소프트웨어 기반 보안 인클레이브를 개발 중이라는 것이다.

인디오홀덤 | 슬롯게임 DiskANN은 바마나(Vamana) 그래프 인덱스를 사용해서 근사 최근접 이웃 검색을 구현한다. 자주 변경되는 데이터를 다루도록 설계됐으므로 로컬 파일, 또는 이메일이나 팀즈(Teams) 채팅 등 마이크로소프트 365와 같은 서비스에 보관된 데이터를 인덱싱해야 하는 에이전트형 AI 애플리케이션에 유용하다.

diskannpy 파이썬 구현 형태로 제공되는 유용한 퀵스타트가 있다. diskannpy는 인덱싱 구축과 검색을 위한 클래스를 제공한다. 넘파이(NumPy)와 같은 수치 분석 파이썬 라이브러리를 사용해서 인덱스를 구축하고 사용해서 기존 데이터 과학 툴에 연결할 수 있는 옵션도 제공된다. 또한 인덱스를 중심으로 애플리케이션을 구축하기 전에 비주얼 스튜디오 코드에서 주피터(Jupyter) 노트북을 사용해서 인덱스를 테스트할 수 있다. 프로토타이핑에 노트북 기반 접근 방식을 사용하면 SLM 기반 애플리케이션의 요소를 개별적으로 개발해서 셀 간에 결과를 전달할 수 있다.

먼저 2개의 인덱스 빌더(Index Builder) 클래스 중 하나를 사용해서 넘파이 배열 또는 DiskANN 형식 벡터 파일의 내용으로 하이브리드 또는 인메모리 벡터 인덱스를 구축한다. diskannpy 라이브러리에는 배열에서 이 파일을 구축하기 위한 툴이 포함돼 있으므로 인덱스에 신속하게 임베딩을 추가할 수 있다. 인덱스 파일은 지정된 디렉터리에 저장되어 검색이 가능하다. 그 외에 인덱스를 업데이트하고 동적인 작업을 지원할 수 있는 기능이 있다.

검색은 간단한 클래스로, 검색 임베딩이 포함된 쿼리 배열과 함께 반환할 이웃의 수와 목록의 복잡성을 정의하는 매개변수가 있다. 목록이 클수록 결과를 제공하는 데 더 오랜 시간이 걸리지만 더 정확하다. 정확성과 지연 사이에서 절충해야 하므로 최종 코드를 커밋하기 전에 실험이 필요하다. 그 외에 쿼리를 일괄 처리해서 성능을 개선할 수 있는 옵션이 있다. 인덱스의 복잡성, 검색에 사용되는 거리 척도의 유형을 정의할 수 있다. 복잡성과 그래프 도수의 값은 클수록 좋지만 결과 인덱스를 생성하는 데 그만큼 더 오랜 시간이 걸린다.

인디오홀덤 | 슬롯게임 diskannpy는 DiskANN 사용 방법을 익히기에 유용한 툴이다. 코파일럿 런타임이 발전하게 되면 아마 마이크로소프트는 코스모스 DB의 경우와 비슷한, 높은 수준의 추상화를 위한 일련의 래퍼를 제공할 것이다. 초기 코파일럿 런타임 발표를 보면 이 부분이 어떻게 작동할지에 대한 힌트가 있고, 검색 증강 생성(RAG) 기반 애플리케이션을 구축하는 데 사용되는 벡터 임베딩 API에 대한 언급이 나온다. 이는 코파일럿 런타임 업데이트를 통해 구현될 계획이다.

왜 DiskANN인가?
해당 프로젝트의 깃허브 리포지토리를 살펴보면 마이크로소프트가 코파일럿 런타임의 기본 기술 중 하나로 DiskANN을 선택한 이유를 쉽게 알 수 있다. DiskANN은 SSD와 인메모리 작업에 모두 최적화되며 많은 데이터를 경제적으로 인덱싱하는 하이브리드 접근 방식을 제공한다. 초기 마이크로소프트 리서치에서 발표한 DiskANN 논문에 따르면 하이브리드 SSD/RAM 인덱스는 대등한 순수 인메모리 알고리즘에 비해 5~10배 더 많은 벡터를 인덱싱할 수 있고, 약 10억 개의 벡터를 높은 검색 정확성과 5ms의 지연으로 처리할 수 있다.

물론 실제 엣지에 호스팅되는 SLM 애플리케이션이 그 정도로 많은 데이터를 인덱싱해야 하는 경우는 드물고, 따라서 성능과 정확성은 더 높을 것이다.

SLM에서 시맨틱 AI 애플리케이션을 구축하는 경우 처리량에 집중하면서 각 작업에 적은 수의 토큰을 사용해야 한다. RAG 애플리케이션을 위한 근거에 기초한 프롬프트를 구축하는 데 필요한 검색을 최대한 빠르게 유지할 수 있다면 간단한 답을 얻기 위해 기다려야 하는 사용자들의 불편을 줄일 수 있다.

시작 시점에 인메모리 인덱스를 로드하면 검색을 간소화해서 애플리케이션이 SLM을 위한 근거에 기초한 프롬프트를 구축하는 데 필요할 때만 소스 데이터에 액세스하도록 할 수 있다. 한 가지 유용한 옵션은 검색에 필터를 추가해서 결과를 정제하고 애플리케이션에 더 정확한 근거를 제공하는 기능이다.

지금은 코파일럿 런타임의 초기인 만큼 퍼즐을 완성하기 위해 필요한 조각 일부가 아직 없다. DiskANN 인덱스를 사용하기 위한 한 가지 필수 요소는 소스 데이터를 벡터 임베딩으로 인코딩하기 위한 툴이다. 이는 코드의 일부로, 또는 애플리케이션에 기본 벡터 인덱스 집합을 제공하기 위해 벡터 검색을 구축하는 데 필요하다.

인디오홀덤 | 슬롯게임 다른 곳에서 볼 수 있는 DiskANN
코파일럿 런타임 외에 마이크로소프트는 코스모스 DB에 빠른 벡터 검색을 추가하기 위한 용도로도 DiskANN을 사용한다. 또한 마이크로소프트 365와 빙 서비스에도 DiskANN이 사용된다. 코스모스 DB에서는 고도로 분산된 대량의 데이터로 작업할 가능성이 높은 노SQL API에 벡터 검색을 추가하고 있다. DiskANN은 빠르게 변화하는 데이터를 지원하고, 이것이 코스모스 DB의 동적 확장과 함께 작동하면서 각각의 새로운 파티션에 새 인덱스를 추가한다. 그러면 사용 가능한 모든 파티션 인덱스에 병렬로 쿼리를 전달할 수 있다.

마이크로소프트 리서치는 꽤 오래 전부터 DiskANN과 같은 툴을 연구하고 있는데, 순수한 연구가 실제 제품(특히 코스모스 DB와 윈도우처럼 광범위하게 사용되는 제품)까지 이어지는 것은 반가운 일이다. 코파일럿 런타임의 일부로 빠르고 정확한 벡터 인덱스를 사용할 수 있으면 생성형 AI와 관련된 위험을 낮추고 인덱스를 PC에 유지해서 소스 데이터를 비공개로 유지하고 SLM의 근거를 확보할 수 있다. 여기에 윈도우의 기밀 컴퓨팅 기법을 결합한 마이크로소프트는 사용자 자체 디바이스에서 안전한 비공개 AI를 제공할 준비가 된 것으로 보인다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/topnews/343494#csidxd96b64408e976f491cfecfd2f92e18a

겅랭식에서 무랭식으로” 데이터센터 냉각 시스템의 이해

인디오홀덤 | 슬롯무료머니 데이터센터의 전력 요구 사항이 증가함에 따라 공랭식 냉각은 한계에 도달하고 있다. 수랭식이 해결책이 될 수 있지만 조정이 필요하다.

데이터센터는 서버, 스토리지, 네트워크 하드웨어 및 기타 다양한 장치에서 소비되는 전기 에너지가 열 에너지로 변환되기 때문에 매우 뜨겁다. 따라서 데이터센터에는 온도를 조절하고 장비의 적절한 기능과 수명을 보장하기 위한 효과적인 냉각 시스템과 방법이 필수적이다. 이런 시스템은 서버 룸의 열 에너지를 외부로 방출한다.

수년 동안 공기는 열 교환을 위한 가장 중요한 매개체였다. 열 에너지를 방출하려면 차가운 공기가 모든 중요 구성 요소를 통과해야 한다. 이런 공기 순환은 데이터센터 소음의 주된 원인 고성능 팬과 대형 방열판을 통해 이루어진다.

뜨거운 공기와 엄청난 소음
일반적인 데이터센터의 소음 수준은 70~80dB이며, 때로는 최대 90dB에 이르기도 한다. 비교를 위해 일반적인 대화는 60dB, 진공 청소기는 약 75dB, 알람 시계의 벨소리는 약 80dB이다. 만약 85dB 이상의 소음에 장시간 노출되면 영구적인 청력 손실을 초래할 수 있다.

일반적인 공랭식 냉각 시스템은 먼저 바닥 환기구를 통해 데이터센터의 냉기 통로(Cold Aisle)로 차가운 공기가 유입된다. 차가운 공기는 서버 랙을 통과하면 열을 가져와 상부의 열기 통로(Hot Aisle)로 열을 전달한다. 마지막으로 천장 통풍구를 통해 가열된 공기를 흡입해 CRAC(Computer Room Air Conditioning) 장치로 냉각하는 과정을 반복한다. <그림 1>은 공랭식 시스템의 개략적인 순환 과정을 나타낸 것이다.

그림 1. 냉기 통로와 열기 통로가 있는 데이터센터의 전형적인 공랭식 냉각 방식. ⓒ Corning

인디오홀덤 | 슬롯무료머니 최근 몇 년 동안 서버 인클로저의 전력 요구량이 인클로저당 5~7kW에서 최대 50kW, 경우에 따라서는 100kW 이상으로 급격히 증가하면서 IT 장비에서 발생하는 열도 급격하게 증가했다. 하지만 기존의 공랭식 냉각 솔루션은 공기 분자의 열 전달 효과의 한계 때문에 이런 새로운 현실에 대응하기에 역부족이다.

수랭식 시스템에 주목하는 관련 업계
그 결과 액체 기반 열 전달 시스템이 업계 전반에서 빠르게 자리 잡고 있다. 예를 들어 물은 물 분자가 서로 더 가깝기 때문에 공기보다 1,000배 더 큰 냉각 용량을 가지고 있다. 하지만 서버나 IT 장비에서 공기처럼 물을 순환시킬 수는 없다. 하지만 단열 열전도판을 사용하면 단열 파이프와 CPU 및 GPU의 열 발생 부품 주변에 물을 순환시킬 수 있다. 최근 널리 사용되고 있는 방법이다.

이런 유형의 액체 냉각에는 수직 및 수평 액체 냉각 매니폴드(manifold, 여러 갈래의 관)가 장착된 서버 랙이 필요하다. 또한 서버와 네트워크 스위치는 이제 방열판 대신 액체 냉각 플레이트를 사용해야 한다. 이런 냉각판은 조밀한 배관망을 통해 냉각수 분배 장치에 연결된다.

수랭식 서버 랙 내부를 살펴보면 공냉식 서버에는 없는 많은 파이프와 매니폴드를 볼 수 있다. 매니폴드는 기본적으로 서버에서 나오는 작은 파이프에 연결되는 여러 개의 구멍으로 분기되는 큰 파이프이다. <그림 2>는 수랭식 서버 인클로저의 개략적인 구성을 나타낸 것이다.

침수 냉각 솔루션의 두 가지 변형
침수 냉각 솔루션은 두 가지 방식으로 개발됐는데, 단상 침수 냉각(1PIC)과 2상 침수 냉각(2PIC)이 그것이다.

1PIC 솔루션은 서버가 광유와 유사한 탄화수소 기반 유전체 유체의 냉각수조에 수직으로 설치된다(그림 3). 냉각수는 서버 구성 요소와 직접 접촉해 열을 전달하며, 가열된 냉각수는 캐비닛 상단을 빠져나와 냉각수 분배 장치를 통해 순환한다. 이는 외부 냉각 시스템에 연결된 온수 회로에 연결된다.

이런 유형의 냉각 솔루션은 수중 서버를 사용해야 한다. 침수 냉각 탱크가 있는 솔루션은 시스템에서 회수되는 온수를 순환시켜 데이터센터 환경으로 열을 방출하는 외부 펌프 및 냉각 타워에 연결해야 한다.

2PIC 시스템에서는 서버가 끓는점(보통 섭씨 50도 미만)이 낮은 특수 개발된 탄화불소 기반 액체 수조에 밀봉된다(그림 4). 서버에서 방출되는 열로 인해 주변 액체가 끓으며, 액체는 증기로 바뀐다. 이 과정을 2상 침수 냉각이라고도 한다. 그런 다음 증기는 냉각된 콘덴서 코일에 도달해 다시 액체 형태로 응축되고, 응축된 액체는 다시 액체 수조로 떨어지고 시스템을 통해 재순환된다.

인디오홀덤 | 슬롯무료머니 수랭식 인클로저는 구조화된 케이블을 위한 연결 기술을 위해 냉각 파이프와 분배기 사이에 공간이 거의 없다. 따라서 침수 냉각 솔루션의 경우 광학 연결 구성 요소를 냉각 탱크 외부에 배치하는 것이 좋다. 한 가지 옵션은 필요한 광 분배 패널을 오버헤드 하우징 지지대에 장착하고 서버 시스템으로 내려가는 짧은 패치 케이블을 사용해 서버 연결을 설정하는 것이다. 침수 냉각 시스템의 경우, 이런 탱크에 사용되는 액체에 장시간 노출되어도 성능이 저하되지 않는 케이블을 사용하는 것도 중요하다.

수랭 시스템은 전체 데이터센터의 전기 비용을 최대 55%까지 절감할 수 있다. 데이터센터 내 서버의 소음 수준을 낮추는 데도 도움이 된다. 이 때문에 데이터센터가 뜨거워질수록 수랭 시스템의 필요성이 더욱 커질 것으로 보인다.

*Mustafa Keskin는 코닝 옵티컬 커뮤니케이션(Corning Optical Communications)의 애플리케이션 솔루션 매니저이다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/howto/341982#csidx2ac194670f382229ae296889d9242b8

게임써 노바 HD 리뷰 | 저예산 컨트롤러 시장에 도전장을 내밀다

컨트롤러는 비싸다. 적어도 콘솔용 퍼스트 파티 게임 패드나 사실상 PC용 표준인 마이크로소프트의 엑스박스 컨트롤러를 고집한다면 언제나 그랬다. 게임써의 노바 HD는 이런 트렌드를 바꾸고자 한다.

실제로도 성공한 듯하다. 사실 노바 HD는 일반 콘솔 컨트롤러에서 찾아볼 수 없는 몇 가지 기능을 갖추고 있을 뿐 아니라 멀티 플랫폼을 지원해 PC, 모바일 기기, 닌텐도 스위치 사이를 쉽게 전환할 수 있다. 또한 닌텐도가 고집하는 이상한 레이아웃에 맞춰 조정해야 하는 다른 컨트롤러와 달리 노바 HD는 드라이버 소프트웨어 없이도 표준 버튼과 닌텐도 페이스 버튼을 즉시 전환할 수 있다.

‘프리미엄’ 컨트롤러의 그립감과 마감은 아니지만 추가 기능, 특히 레이아웃 교체 옵션과 홀 효과 아날로그 스틱은 예산을 절약하려는 모든 사람에게 게임써의 옵션이 훌륭한 경쟁자임을 의미한다. 35달러(약 4만 9,000원)에 아무것도 포기하지 않고 오히려 몇 가지 옵션까지 얻을 수 있다.

기능
필자는 슈퍼 NES를 연상시키는 차분한 베이지색, 회색, 보라색의 ‘레트로’ 색상 조합이 적용된 노바 HD를 받았다. 평소에 필자가 선호하는 스타일은 아니지만, 게임써의 로고와 잘 어울리는 테마다. 레트로 테마 외에 80년대풍의 괴감한 투명 청록색 색상도 제공된다.

컨트롤러의 뒷면은 모노톤이지만 전원을 켜면 약간의 조명 쇼가 펼쳐진다. 아날로그 스틱 주위에 여러 가지 색상의 원이 켜지는데, 이는 저가형 컨트롤러와 ROG 엘라이와 같은 프리미엄 기기에서 볼 수 있을 정도로 일반적인 추세다. 나중에 자세히 설명하겠지만 원한다면 바꿀 수 있다.

그 외에는 평범한 엑스박스 스타일의 컨트롤러다. 버튼은 놀랍지는 않지만 느낌이 좋고, 레이아웃은 멋지고 친숙하며, 스틱은 약간 느슨한 편이다(홀 효과 스틱도 마찬가지다). 한 가지 불만이 있다면 무엇보다 PS5 컨트롤러처럼 느껴지는 트리거의 이동 거리가 조금 짧다는 것이다.

전면의 모드 전환 버튼과 스위치와 호환되는 추가 컨텍스트 버튼 하나 외에도 최근 점점 더 인기를 얻고 있는 기능인 어사인 버튼이 뒷면에 2개 탑재됐다. 뒷면에는 매우 가벼운 다이아몬드 질감의 그립이 있어 장시간 게임으로 땀을 흘리기 쉬운 게이머에게 유용하다.

패키지에는 무료 휴대용 케이스도 포함되어 있다. USB 동글이 패키지에 포함된다면 좋았겠지만, 이 가격이라면 이해할 수 있다.

레이싱 게임을 제외하면 전천후 컨트롤러
필자는 하데스 II(Hades II)를 플레이했으며, 심각한 문제는 발생하지 않았다. 처음에는 스틱이 약간 뜨는 현상이 있어서 멜리노에가 원을 그리며 천천히 걷는 경우가 있었다. 마찰점이 없는 홀 효과 구성 요소의 부작용이라고 할 수 있다. 하지만 몇 시간이 지나면 저절로 해결되는 듯했고 이런 현상이 다시 나타나지는 않았다. 끔찍한 스틱 드리프트에 영향을 받지 않는 디자인만으로도 가치가 있다.

브롤할라(Brawlhalla)를 플레이했을 때도 불만은 없었지만 좀 더 진지한 격투 게임 팬이라면 더 클릭감이 좋은 페이스 버튼을 원할 수도 있을 것 같다. 레이싱 게임을 할 때도 괜찮았지만, 천천히 속도를 올리는 것보다 풀 스로틀에서 클릭하는 경향이 훨씬 더 강했다. 노바 이 컨트롤러로는 드라이빙 게임은 피하고 싶었다.

페어링 및 레이아웃 옵션
노바 HD는 일반 컨트롤러 기본값 외에 3가지 페어링 모드를 제공한다. 스위치, 안드로이드, ‘수신기(Reveiver)’는 각각 홈 버튼+X, B, Y로 전원을 켜서 활성화할 수 있다. 필자는 컨트롤러의 USB 기반 수신기를 사용해 보지 못했고 항상 블루투스만 사용했다. 게임써 스토어에서도 리시버가 보이지 않아 ‘수신기’는 어떤 기능인지 알아내지 못했다.

어쨌든, 페어링 모드에서는 거의 차이를 발견하지 못했다. 특히 스팀에서 이미 컨트롤을 개인화할 수 있기 때문이다. 기본 레이아웃이 스위치 스타일이고 A 버튼이 동쪽에 있기 때문에 개인화할 생각이었지만, 알고 보니 번거로운 작업이 필요 없는 제품이었다. 노바 HD를 사용하면 펌웨어에 포함된 다양한 설정 조정 외에도 닌텐도 기본 레이아웃과 엑스박스(A가 남쪽 위치) 레이아웃을 전환할 수 있다.

모드 전환 버튼인 M과 B를 2초간 길게 누르면 레이아웃이 전환된다. 이 2가지 레이아웃은 거의 모든 게임 플랫폼에서 사용되며, 노바 HD는 기기의 전원을 끌 때 마지막 설정을 기억한다. 외부 소프트웨어 없이 이런 옵션을 제공하는 컨트롤러는 이전에 보지 못했다. 정말 유용한 기능이다.

노바 HD는 별도의 소프트웨어 없이 파티 트릭을 지원한다. M 버튼과 다른 버튼의 조합으로 LED 조명의 밝기, 애니메이션 효과 속도, 일반 색상 등을 조정할 수 있다. 스틱의 데드 존을 활성화하고 매크로나 터보를 후면 ‘패들’ 버튼에 프로그래밍하는 것도 마찬가지다. 모든 조합을 익히기 위해 잠시 동안은 매뉴얼을 가까이에 두거나 PDF를 다운로드해야 할 수도 있지만, 얼마 지나지 않아 익숙해질 것이다.

호환성 문제
이 훌륭한 컨트롤러에 한 가지 아쉬운 점이 있다면, 스위치 프로 게임패드(자이로스코프 센서를 포함해 에뮬레이션함)를 지원하지 않는 게임이라면 노바 HD도 지원하지 않는다는 점이다. 예를 들어, 포트나이트(Fornite)의 로켓 레이싱(Rocket Racing)에서는 컨트롤러의 트리거를 감지하지 않고 작동하지 않았다. 이 게임과 밀접하게 관련 있는 로켓 리그(Rocket League)에서는 제대로 작동했지만, 엑스박스 스타일의 입력과 일치하는 인터페이스 표시가 기본값으로 설정됐다.

일부 게임에서 가끔 골치 아픈 문제가 발생할 수 있다. 개별 게임 설정과 스팀의 뛰어난 컨트롤러 지원으로 극복할 수 있겠지만, 미리 경고한다.

게임써 노바 HD, 구매해야 할까?
35달러에 불과한 노바 HD는 가치와 기능 면에서 우수한 8비트두(8BitDo)와도 견줄 수 있는 환상적인 저가형 제품이다. 스위치, 모바일, PC에서 동일한 저렴한 컨트롤러를 사용하고자 하는 사람이라면 이보다 더 좋은 제품은 없을 것이다.

레이싱 게임 팬이라면 트리거가 마음에 들지 않을 것이고, USB 동글이 없다는 점은 아쉽다. 하지만 개인화할 수 있는 후면 버튼, 럼블 및 홀 효과 스틱이 있는 컨트롤러와 가장 일반적인 레이아웃을 빠르게 오갈 수 있는 옵션이 있다는 점을 고려하면 이런 단점은 기꺼이 용서할 수 있다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/review/341730#csidx4a1e72b6dc612df836b12ab22fc6f4a