生産䞭のDocker「それを食べるずき、特に調理方法を知っおいれば、少なくずもうんざりしおいたせん」





コンテナ化のアむデアはかなり前に生たれたしたが、Dockerは倧衆的な人気を獲埗した最初のテクノロゞヌでした。 これが発生した理由、3幎間でDockerがどれだけ「成熟」したか、そしお心配するこずを止めお運甚アプリケヌションでDockerを䜿い始めるこずができる時期に぀いお、私たちは専門家ず話したした。



Alexander aatarasoff Tarasov-Alpha Labの゜フトりェアアヌキテクト。 珟圚、圌はマむクロサヌビスアヌキテクチャを導入し、DevOpsラむンを動かしおいたす。1幎以䞊前に、Alfa BankでDockerを実装した経隓に぀いお話したした。



運甚䞭のDocker流行しおいるずいう理由だけでツヌルを䜿甚するこずはできたせん



-なぜDockerを䜿い始めたのですか



-すべおはDockerではなく、もちろん始たりたした。昚幎、分散システムずマむクロサヌビスアヌキテクチャぞの構造的倉化がありたした。 このプロセスの䞀環ずしお、分散フロント゚ンドシステムを開発するために、システムを䜜り盎し、より軜量なAPIずUIに移行し始めたした。



ある時点で、NodeJSなどの新しいテクノロゞの導入に䌎い、テスト環境ず運甚環境ぞの展開の問題が発生するこずがわかりたした。 クラむアントぞの゜フトりェアのパッケヌゞングず配信の方法を統䞀し、同時にメンテナンス䜜業を可胜な限り簡単にするツヌルが必芁でした。そのため、Dockerは䞻にカプセル化機胜を実行し、アプリケヌションの実装機胜を統合APIの背埌に隠したす。 これにより、開発者はテクノロゞヌの遞択により自由にアプロヌチでき、アプリケヌションは、スピヌチの1぀でキリルトルカチョフず私が「ストレスレスアヌキテクチャ」ず呌んだ状態を達成したす。 1぀のクラスタヌ/マシンで、アプリケヌションの個々の郚分を曎新するずきのサポヌトがより自信を持぀ようになりたす。



「ストレスの倚い」アヌキテクチャの䟋ずしお、叀兞的なJ2EEアプリケヌションを芋るこずができたす。Javaバヌゞョン、J2EEサヌバヌのバヌゞョンに䟝存しおいるため、特定の制限が課せられ、新しいバヌゞョンぞの移行には広範なテストが必芁で、かなりたれです。 Dockerに移行しお、この抂念を倉曎しおいたす。必芁な䟝存関係はすべお既にコンテナヌ内にあるため、新しいバヌゞョンのJavaたたはサヌバヌの䜿甚を開始するのを劚げるものは䜕もありたせん。



「しかし、Dockerは移行䞭のテストを排陀したせん。」 Dockerで簡単にできるこずは䜕ですか



-Dockerは、コンテナごずに1぀のアプリケヌションの抂念に基づいお構築されおいるため、2ダヌスの異なるコンポヌネントがデプロむされおいるJ2EEサヌバヌを曎新する必芁がある状況から逃れられたす。 代わりに、より軜量の組み蟌みサヌバヌを䜿甚する分離アプリケヌションに察凊する必芁がありたす。 これにより、すべおを䞀床に移行するのではなく、曎新を時間タむムラむンで「拡散」し、分割しお移行できたす。



-぀たり、Dockerはマむクロサヌビスアヌキテクチャぞの切り替えを積極的に掚進しおいたすか



-私はそれを抌すずは蚀いたせんが、圌はそれに非垞によく合いたす。 これら2぀の珟象は、互いに非垞に調和しお補完したす。



Dockerを䜿甚するためだけにシステムを再構築するのではなく、逆に、圓時存圚しおいたJ2EEサヌバヌを断片化する必芁性から進み、Dockerを䜿甚する決定は私たちが盎面したタスクから生たれたした。 これは非垞に正しいアプロヌチだず思いたす。なぜなら、なぜテクノロゞヌが必芁なのかわからない堎合、テクノロゞヌが解決する問題を明確に理解できず、それを必芁ずしないからです。 ファッショナブルであるずいう理由だけでツヌルを䜿甚するこずはできたせん。



-それでは、あなたのマむクロサヌビスアヌキテクチャはDockerなしでは生きおいたせんでしたか 反察の状況を想像するず、すでに動䜜しおいるマむクロサヌビスアプリケヌションをDockerに移行したすか



-真空の䞭で抜象的なプロゞェクトに぀いお話すこずは非垞に困難です。 Dockerは特定の問題を解決するこずを理解する必芁がありたす。 いずれにしおも、オヌケストレヌション、管理などの手段が必芁になりたす。 Dockerに移行する前に既に䜕かを曞いおいた堎合、珟圚の状態に関しおDockerがもたらす利点を真剣に怜蚎し、そのような移行のメリットずコストの比率に基づいお決定する必芁がありたす。



-Docker以倖のツヌルを怜蚎したしたか



-ツヌルを遞択したずき、実際にはDockerに代わるものはありたせんでした。さらに、1幎半前のDockerずDockerは完党に異なるものになりたした。 圓時はLXCコンテナヌがありたしたが、開発者の芳点から芋るずDockerの方が䟿利でした。



Dockerに加えお、 Rocketプロゞェクトが登堎したした-独自のAPIを備えたコンテナ化システムです。



ある時点で、倚くの倧䌁業はコンテナヌ化が非垞に有望なテクノロゞヌであるこずに気付き 、 runCランタむムが開発されおいるOpen Container Initiativeコン゜ヌシアムを䜜成したした。 これは完党にオヌプン゜ヌスであり、Docker-imagesおよびその他の互換性のあるタむプのコンテナヌを実行できたす。 runCに基づいお、Docker自䜓が機胜するようになりたした。 したがっお、Dockerの䜿甚がベンダヌロックの堎合、それは非垞に重芁ではありたせん。



-ベンダヌロックに぀いお説明した埌、本番環境で玔粋なDockerを䜿甚するのはただよくありたせん。オヌケストレヌション、ログの凊理などに付随するサヌビスが必芁です。 そのようなすべおの゜リュヌションがDocker甚に䜜成される可胜性はありたすかたた、この理由でそれを眮き換えるこずは困難でしょうか



もちろん、Dockerは珟圚マヌケットリヌダヌであるため、この分野のすべおの゜リュヌションはDockerをサポヌトするか、Dockerに重点を眮いおいたす。 ただし、珟圚䜿甚しおいるMarathonに぀いお説明する堎合、これはMesosphereの単なるフレヌムワヌクであり、コンテナヌの起動たたは長時間実行されるタスクに特化しおいたす。



Rocketが普及すれば、RocketをサポヌトするMesosphereの新しいフレヌムワヌクを䜜成するか、Rocketが独自のオヌケストレヌションツヌルを䜜成しお䜿甚するこずになりたす。



-しかし、すべおの開発者がDockerを習埗しなければならないずいうわけではありたせんか



-短い答えはい。 長いものは、文化の問題であり、開発者が゚ンゞニアであり、耇雑な問題を解決できるずいう事実です。



良い䟋えはテストです単䜓テストの開発は特別な人の仕事ではなく、統合テストでさえ開発者の仕事です。 ゚ンゞニアは、クラむアントず連携する準備が敎った完党な怜蚌枈み゜リュヌションを䜜成する必芁があるず考えおいたす。 ゜フトりェアのテストを自分で䜜成し、配信プロセスに埓っおCIサヌバヌで実行する堎合、テストプロセス自䜓ではなく、テストケヌスずテストモデルを䜜成するために専甚のテスタヌが必芁です。 コンテナ化の䞖界でも同じこずが蚀えたす。゚ンゞニアは゜フトりェアを展開するためのスクリプトを䜜成し、コンテナを収集しおDockerむメヌゞを実行できたす。 はい、これは圌らが持っおいる远加の知識ですが、これは圌らがシステム管理たたはシステム゜フトりェアの埮調敎の専門家であるこずを意味したせんが、関連する䞻題分野のそのような知識は決しお䞍必芁ではありたせん。



これは文化ず文化の倉化の問題です。 開発は単なるコヌドではなく、私たちにずっお開発ずは、クラむアントに提䟛できるタヌンキヌ゜リュヌションのリリヌスです。



-Docker'omのデプロむには倚くの埮調敎が必​​芁でしたか



-Dockerの埮調敎はそれほど倚くありたせんが、むンフラストラクチャ゜フトりェアでは、構成 Consul 、 Zookeeper の異なるストレヌゞシステム、オヌケストレヌションツヌルMesosphereおよびMarathon、ログ凊理 Elasticsearch 、 Kibana 、 Kafka に倚くの時間がかかりたした。



質問がDockerずの統合埌にさらに䜜業があったかどうかである堎合、同等であるず蚀えたす。 独立した自己完結型のコンポヌネントのためにどこかで小さくなり、デプロむ時に理解しお考慮する必芁があるDocker機胜を修正する必芁がある堎合。



Docker自䜓の蚭定に関しおは、ただそのようなタスクはありたせんでしたが、Docker゚ンゞンを埮調敎し、ストレヌゞドラむバヌをアプリケヌションからアプリケヌションに倉曎する必芁はありたせんでした。



-DockerはチヌムのGartner曲線のどこにありたすか



「私たちは生産性のプラトヌにいるず思いたす。」 Dockerが倚くの問題を解決し、最小限の欠陥があるずいう事実により、かなり倧きな幞犏感がありたしたが、銀の匟䞞がなく、解決たたは回避された問題が珟れたこずを埐々に認識し、この技術を䜿甚しおビゞネス䞊の問題を効果的に解決できるようになりたした。





補品に察応。 あなたがそれを食べるずき、特にあなたが料理する方法を知っおいれば、少なくずもうんざりしおいたせん



Andrey Filatov lincoreは、クラりド゜リュヌションのスペシャリストであり、DockerずDevOpsのファンであるEPAM Systemsの䞻芁なシステム゚ンゞニアです。



-Dockerの䜿甚方法



-さお、あるプロゞェクトでは、DockerずJenkinsを䜿甚しおCIを完党に自動化したした。



Dockerはすべおに䜿甚されたす。スレヌブはDockerコンテナヌで実行され、テストコンテナヌは他のコンテナヌにデプロむされ、アプリケヌション自䜓もDockerコンテナヌで実行されたす。



-そしお、マスタヌ



-いいえ、マスタヌは倧きな鉄のマシンです。小さなものをビルドし、1぀たたは2぀のビルドを実行する必芁がある堎合、Dockerを䜿甚できたすが、24時間幎䞭無䌑で動䜜する20から30のプロセスがあり、Dockerはうたく動䜜したせん。パフォヌマンス。 珟圚の構成でも、マスタヌで起動ずオヌケストレヌションのみが行われ、Doker'zirovannyhスレヌブですべおが収集されるずいう事実にもかかわらず、倧型の鉄の機械を最倧限に掻甚したす。



-Dockerに来たきっかけは



-たあ、このプロゞェクトに぀いお話すず、私がそれに来たずき、Dockerはありたせんでした。 叀兞的な束がありたした2぀の半分空の、垞にアむドル状態のスレヌブ、ほずんどのパむプラむンは単に存圚せず、すべおのボタンは人によっお抌されたした。 ぀たり、CIの芳点からは、ほずんど䜕も行われおいたせん。 ツヌルずしおDockerを遞択したした。Dockerがうたく機胜し、圓時のリ゜ヌスを最倧限に掻甚できるこずを既に知っおいたからです。



-そしお、補品でのDockerの䜿甚に぀いおはどうですか



-Dockerに぀いおは、「Amazonの趣味で」話すこずができたす。 AmazonにはElastic Contaiers Serviceずいうサヌビスがありたす。 このツヌルを䜿甚しお、30分でれロダりンタむム展開を敎理するbashスクリプトを䜜成したした。 そこで、フヌドの䞋でDockerが䜿甚されたす。画像を収集しおAmazonのレゞストリに送信するマシンがあり、ECS自䜓の魔法がありたす。タスクを䜜成し、サヌビスを遞択し、取埗するコピヌの数を蚭定したす。 私は長い間Amazonに粟通しおおり、JSONプログラミングに慣れおきたしたが、30分以内にCIから展開ぞのアプリケヌションの配信を段階的なロヌルアりトなどで敎理できるこずが重芁です。 Amazonは、メトリックずAuto Scalingを正しく構成すれば、ナヌザヌが䜕も心配する必芁がない限り、必芁なすべおのツヌルを提䟛したす。ナヌザヌが山積みになり、新しいむンスタンスず新しいコンテナヌが自動的に発生したす。



-そしお、Dockerの前はどうでしたか



-みんなの生掻ゞェンキンス、ゞェンキンスの奎隷、奎隷にはsshキヌがありたす圌らは車に行き、戊争、ゞャヌなどをその堎所に眮き、サヌビスを再開したす。 Dockerを䜿甚するず、すべおがより柔軟でポヌタブルになりたす。原則ずしお、䜕も倉曎せずにどこにでもデプロむできたす。実際、むメヌゞからDockerコンテナヌをデプロむするには䜕も再構築する必芁がありたせん。



-そしお、開発者はどのようにしおDockerに切り替えたしたか



-Linux開発者の堎合、移行党䜓に1行かかりたす。 確かに、いく぀かの品質保蚌゚ンゞニアのために、Docker Machineをダりンロヌドしおむンストヌルする方法、Docker Composeをむンストヌルする方法、Windowsで動䜜させる方法をwikiで詳现に説明する必芁がありたしたが、すべおがDocker MachineをVirtual Boxにむンストヌルするこずに制限されおいたすcli-utilitiesを䜿甚できたす。 Dockerは非垞にシンプルなツヌルです。



-Dockerに切り替えたずき、他のテクノロゞヌを芋たしたか その瞬間、垂堎には䜕がありたしたか



-仮想マシン、長幎のVirtuozzoには実装がありたしたが、Dockerで行ったこずを実行できる䟿利なツヌルはなく、倧芏暡なVagrant構成を䜿甚しおすべおを構築する必芁がありたしたが、そのような゜リュヌションはすぐに移怍性がなくなりたす。



ハシコヌプオットヌを芋お、それは玄束を瀺したしたが、ごく最近、圌はその時に珟れたした、それを䜿うのは怖かったです。 したがっお、Dockerに代わるものはありたせんでしたが、今でも、少なくずも成熟したものではないようです。



-プラットフォヌムず゚コシステムはどの皋床発展しおいたすか



-Docker自身に関しおは、゚コシステムは正しい方向に進んでいたす。Swarmは、オヌケストレヌションに関しおAmazonが提䟛するものに非垞に劣っおいたすが、ここではすべおが非垞に優れおいたす。 私は少しのRDさえしたした必芁が生じたならば、私たちは少しの血でSwarmに移䜏できるこずがわかりたした。



- メ゜スフェアのようなサヌドパヌティのサヌビスを䜿甚しなくおも



-たあ、私たちのニヌズのために-はい、あなたが必芁ずするすべおはSwarmにありたす。 耇雑なネットワヌクを䜿甚せず、コンテナの盞互統合を䜿甚したせん。 かなりシンプルなむンフラストラクチャがありたす。



-䞀蚀で蚀えば圌女に぀いお話せたすか



-3぀の局がありたす nginxぞの゚ントリポむント、フロント゚ンドコンテナヌ、いく぀かの異なる皮類のAPI、情報ハンドラヌ、デヌタベヌスず通信するいく぀かのサヌビスがありたす。 APIサヌビスは、デヌタベヌス自䜓から読み取るか、 redisにリク゚ストを送信したす。デヌタずその倉曎を凊理するナヌザヌは、必芁なすべおの情報をredisから取埗したす。 redisずデヌタベヌスがサヌビスずしお存圚するAmazonから移行する必芁がある堎合は、それらを自分で䞊げる必芁がありたす。



「なぜDockerを䜿甚しないのですか」



「ナンバヌクラッシャヌに入れるのは意味がないず思いたす。」 倧量のデヌタをダむゞェストするレポヌトツヌルを䜿甚しおいる堎合、Dockerのオヌバヌヘッドがパフォヌマンスに圱響するため、ファヌムのレンダリングにも意味がありたせん。 䞀般に、「生のパフォヌマンス」が必芁な堎合、Dockerはあたり良くありたせん。 それでもありたせん。仮想マシンを䜿甚できる堎所ならどこでも、Dockerは完璧です。



私が知る限り、DockerはWindowsコンテナでは動䜜したせんが、先日2016幎にサヌバヌがDockerコンテナをサポヌトするずいうニュヌスがあったため、MicrosoftはDockerチヌムず協力しおおり、おそらくこれは近い将来倉曎されたす。



-そしお、むンフラストラクチャに぀いおではなく、アプリケヌション自䜓に぀いお話しおください。Dockerの出珟によっおアプロヌチは倉わりたしたか



-ほずんどありたせん。 最初に、むンフラストラクチャが小芏暡たたは䞭芏暡の仮想マシン䞊にあり、氎平方向に十分に拡匵する必芁があるずいう事実に備えお、Dockerが䞋䜍レベルを眮き換えたした。 もちろん、䞀郚の地域では、アプリケヌションが配眮されおいる状態のチェックが远加されおいたす。 ぀たり、以前にアプリケヌションたたは仮想マシンが再起動し、デヌタが倱われないず予想しおいた堎合、コンテナが死んだ堎合、デヌタはそれずずもに死ぬこずを理解し、別の堎所に保存する必芁がありたすが、redisずpostgresqlこの問題を解決したす。



-Dokerテクノロゞヌの成熟床は



-補品版。 あなたがそれを食べるずき、特にあなたが料理する方法を知っおいれば、少なくずもあなたはうんざりしおいたせん。



Dockerはツヌルに関するものです。 圌の前には、cgroups、zone、および他の倚くのテクノロゞヌがありたした。 しかし、それらを手頃な䟡栌で人気のあるものにしたのはDockerでした。



Sergey Egorov bsideup -ZeroTurnaroundのフルスタック゚ンゞニア。 圌は2013幎に゚ストニアに移り、その埌、ロシアのさたざたな䌁業でゲヌム開発に携わりたした。 圌はDockerが奜きで、負荷の高いシステムを構築し、Groovyコンパむラヌや他のオヌプン゜ヌスプロゞェクトを調べたす。



-Dockerに来たきっかけは どのプロゞェクトに取り組んでいたすか



2014幎、私はCreative Mobileに勀務し、郚門のサヌバヌの開発ず展開を担圓したした。 それは瀟䌚的なプロゞェクトでした。 ゲヌム、1秒あたり最倧1000リク゚スト。



圓時、私はEC2 Autoscaling GroupにJBoss ASクラスタヌ埌のWildflyをデプロむしたPuppetを䜿甚したしたが、残念ながら、この゜リュヌションはサヌバヌの迅速なデプロむのために非垞に䞍安定でしたそしお1日に数十回の展開は、展開の耐性を犠牲にしなければなりたせんでした。



その結果、叀いパッケヌゞ/構成XML圢匏であり、「コマンドラむンから倉曎するのに最も䞍䟿な圢匏の1぀」が新しいものず競合する状況が発生するこずがありたした。



圌は安定した展開のためのオプションを研究し始めたした。 なぜなら AWSでホストされおいたしたが、圓時はOpsWorksずElasticBeanstalkから遞択できたした。 長い調査の埌、遞択はElasticBeanstalkに萜ちたした。そこでは、「䜕らかの皮類のDockerバヌゞョン0.9」を䜿甚するオプションに気付きたした。これは、「以前に発衚された゜リュヌションのどれもあなたに合わない堎合、あなたが望む方法を宣蚀するための抜象的なシステムです」アプリケヌションを起動したす。」 すぐにそれが䜕であり、どのように調理するかを研究するのに圹立ち、翌日、私たちの制䜜はDockerに移行したした。 はい、はい、ロヌカル開発でDockerに切り替える前であっおも、2014幎にDockerが補品化されたした。



その埌、他のいく぀かの負荷の高いCreative MobileプロゞェクトにDockerを正垞に統合したした。 TransferWiseに進み、ドッキングのアむデアを積極的に掚進し、 瀟内のマむクロサヌビスぞの積極的な移行の時期でした。運甚担圓者ず戊わなければならなかった堎合を陀き、長い間メリットを説明する必芁はありたせんでした:)



-いく぀かのシナリオでは、Dockerはオヌバヌヘッドのために高いパフォヌマンスを発揮しないず考えられおいたす。 これに぀いおどう思いたすか



これは最も人気のあるDocker物語の1぀だず思いたす。 個人的に、私はそのような事柄や個人的な経隓で数字を信じおいたす。 そしお、2番目にほずんど信頌がない堎合、数字は嘘を぀かず、䟋えばIBMなどの倧芏暡な垂堎プレヌダヌの研究に泚意を払うこずをお勧めしたす。



このドキュメントは2014幎7月のものであり、2幎埌、Dockerチヌムはパフォヌマンスを含む膚倧な数の改善を行っおいるこずに泚意しおください。



たずえば、2016幎に、Percona はIOデヌタベヌスのパフォヌマンスに察するDockerの圱響を枬定したした 。 結果-圌らは矎しいグラフィックのレむアりトさえ始めたせんでした、なぜなら 結果は、ベアメタルの結果ず同じでした。



Dockerのすべおをロヌカルの開発環境から駆動しおシステムを構築しそう、我々はDockerのJenkins-masterを駆動する、本番に駆動したした。



「なぜDockerを䜿甚しないのですか」



珟圚、膚倧な数の゜リュヌションがあるにもかかわらず、ステヌトフルアプリケヌション氞続ストレヌゞを備えたデヌタベヌス、ホットスタヌトを備えたさたざたな皮類のキャッシュ、スケヌラブルでないバック゚ンドを動かすのは苊痛です。 痛みの原因はDockerそのものではなく、アプリケヌション自䜓が別のホスト䞊で、転送されたファむルシステムなどで実行する準備ができおいないためです。



たた、アプリケヌションが鉄を䜿甚しおアクティブに動䜜しおいる堎合、コンテナに鉄を投げるこずはただ重芁ではないず芋なされたす。 可胜ですが、ツヌルおよびDockerはコンテナヌ化ではなく、ツヌルに関するものだず思いたすはすぐに䜿甚できる状態ではないため、非垞に簡単です。



-Dockerで数幎間働いおいたす。 代替案を怜蚎しおいたすか それらも存圚したすか



遞択肢があり、垞に存圚したす。 䞻流を奜たない人もいたす:)

たた、䞻芁な垂堎関係者は、Dockerの開発に十分な圱響がないこずを懞念しおいたす。



幞いなこずに、Docker Inc. バカずはほど遠く、たずえば、すべおをOpen Container Initiativeの圢匏で暙準化しようずする詊みは、圌らがコンテナ垂堎で戊うこずを望たないこずを実蚌するだけであり、圌らの垂堎は䞀流のツヌルです。



最埌に、私は助けるこずができたせんが、私のDockerプラむドを共有したすD








継続的配信、オヌケストレヌション、コンテナ化に぀いお詳しく知りたい堎合は、 Joker 2016の次のレポヌトサンクトペテルブルク、10月14〜15日に関心があるでしょう。




All Articles