列車を解攟したす。Yandexレポヌト

さたざたなYandexチヌムおよび倧芏暡なIT䌁業でのリリヌスプロセスは、同様の方法で構成されおいたすが、倚くの詳现が異なりたす。モバむルデベロッパヌには固有の仕様がありたす。リリヌスは、App StoreおよびGoogle Playでのレむアりトの順序によっお圱響を受けたす。Android開発者Dmitry PolyakovDmpolyakov 圌は圌の呚りのプロセスに぀いお話したした-圌のチヌムがスケゞュヌルでリリヌストレむンを送信する方法、予定倖のリリヌスを開始する方法、すでに残されたリリヌスに車を远加する方法、そしお順調に進むために䜕をすべきか。


-皆さん、こんにちは。私は、私が採甚するモバむルアプリケヌションのAndroid開発者であるDmitry Polyakovです。



珟圚、2぀のチヌムAndroidずiOS開発を䜿甚しおいたすそれぞれ13人。これにより、倚くのクヌルなタスクを䞊行しお実行し、それらをナヌザヌにすばやく展開できたす。レポヌトでは、gitを䜿甚しお1぀のリポゞトリヌに䜏む方法を孊びたした。

次に、リリヌスサむクルの仕組みに぀いお説明したす。マネヌゞャヌが来お、この機胜をできるだけ早く展開したいず蚀っおいたす。おそらく、おそらくすべおのマネヌゞャヌが望んでいるので、毎週App StoreずGoogle Playに行くようにリリヌスプロセスを蚭定したした。私たちが持っおいるツヌルに぀いおもお話ししたす。ぜひ詊しおみおください。クヌルです。

Gitフロヌ


Git Flowから始めたしょう。基本ずしお、私たちはクラシックなGit Flowを採甚したしたが、私たちの状況やチヌムの䞋では、状況は倧きく倉化したした。あなたも芋えたす、そしおおそらくこれからの䜕かがあなたに合うでしょうが、䜕かは䌌おいたせん。各チヌムはgitを䜿甚する独自のアプロヌチを持っおいたす。

どのように機胜したすか Epicは、いく぀かの優れた機胜のために、機胜のルヌトブランチです。より明確にするために、補品の䟋をすぐに芋おみたしょう。



マネヌゞャヌが来お蚀う-開発者は、アプリケヌションで遞択した補品を䜿甚しおりィッシュリストの機胜を䜜成したす。開発者は新しいブランチ゚ピックを開始し、りィッシュリストず呌びたす。



さらに、トラッカヌで始たる小さなタスクに分解したす。おそらく、これはネットワヌクでの䜜業、UIのレンダリング、テストの䜜成です。そのような機胜ごずに、圌はトラッカヌでタスクを開始したす。そしお、タスクの完了を開始するずすぐに、察応する機胜ブランチを開始したす。同じ゚ピックから圌女をブランチしたす。

圌はそのような機胜の1぀で䜜業を終えるずすぐに、プヌルリク゚ストを通じおそれを゚ピックに泚ぎたす。プヌルリク゚ストは、チヌムの他の開発者がコヌドをチェックするずきのメカニズムです。圌らが䜕かを奜たない堎合、あなたのコヌドはあなたの叙事詩に届かないかもしれたせん、それは圌らずの合意を芋぀けるたであなたが解攟されないこずを意味したす。

私たちのチヌムにはこれらのレビュヌ担圓者が2人いたす。それらはランダムに割り圓おられたす。これは自動化されたプロセスであり、プヌルリク゚ストで倉曎したのず同じファむルを最近䜿甚した開発者から遞択されたす。



したがっお、独自の機胜セットを備えたいく぀かの゚ピックがプロゞェクトに䞊行しお存圚しおいるこずがわかりたす。゚ピックは1぀の機胜のみを持぀こずができたす。これは、epicぞのプヌル芁求を通じおこの機胜をアップロヌドする堎合に発生する可胜性がありたす。



1぀の゚ピック内のすべおの機胜の䜜業が完了するずすぐに、タスクは最初にテストチヌム、QAチヌムを離れ、ブランチを機胜的にテストしたす。圌らがバグを芋぀けたら、あなたはこの叙事詩の䞀郚ずしおそれらを線集したす。すべおのバグが修正されたら、この゚ピックを開発に組み蟌みたす。ここでは、epicの機胜の段階ですべおのコヌドが確認されおいるため、チヌムによる远加のコヌドレビュヌは既に行われおいたせん。

私たちの開発は、゚ピック段階でテストされ、コヌドがプヌル芁求を通過するため、すでにテスト枈みのコヌドがアクセスするようなブランチです。



これにより、リリヌスサむクルの最初に新しいリリヌスブランチを安党に䜜成できたす。ただテストされおいないバグがたくさんあるこずを恐れずに。したがっお、開発から新しいリリヌスブランチを䜜成しおいたす。テスト䞭です。リリヌスがテストされ、ゲヌトに進む準備ができるずすぐに、このブランチはマスタヌにマヌゞされたす。

ホットフィックスがあり、別のブランチタむプがある堎合がありたす。これは非垞に短いリリヌスであり、すぐに公開する必芁がありたす。次のリリヌスサむクルが始たるたで3日たたは4日埅぀時間はありたせん。通垞、これは小さなものです。

たずえば、ある皮のバグが本番環境に入っお非垞に重倧な堎合は、早急に修正する必芁がありたす。したがっお、珟圚のリリヌスを停止し、このバグの修正プログラムを実行しお、リリヌスを曎新したす。ただし、ホットフィックスは垞にバグに぀いおの話ではありたせん。時には補品のニヌズがありたす。



たずえば、モスクワで自己分離モヌドが導入されるずすぐに、ナヌザヌが非接觊で補品を泚文できるようにするための補品が必芁になりたした。これで、アプリケヌションで泚文するずきに、ナヌザヌは「ドアから出る」機胜を遞択できたす。宅配䟿が到着し、小包をドアの䞋に眮き、非接觊であなたに枡したす。

この修正プログラムのタスクには、家にいお宅配䟿で泚文するように促すさたざたなりィゞェットも含たれおいたす。今は集荷所に行かないでください。これらのタスクは重芁であるず考えおいるため、できるだけ早くナヌザヌに䌝えるこずができるように、修正プログラムを通じおこれらのタスクをロヌルアりトしたした。

ホットフィックスがある堎合、マスタヌからブランチしたす。開発からそれをブランチにするこずはできたせん。その時点で、ただリリヌスされおいない新しい゚ピックを開発できるからです。しかし、これらの叙事詩をホットフィックスに持ち蟌みたくないので、ランダムに圱響を䞎えたり、ホットフィックスをブロックしたりするこずはありたせん。修正プログラムが完了した埌、このコヌドはただ開発に存圚しおいなかったため、マスタヌに挿入し、開発に远加したす。



マスタヌは、アプリケヌションの最新バヌゞョンに察応するコヌドベヌスであり、珟圚ナヌザヌのストアにありたす。機胜テストずリグレッションテストはすでにそこに合栌しおいるため、バグがなく、クリヌンです。これはバックアップブランチです。

リリヌスが完了したら、開発に泚ぎ蟌みたす。リリヌスの䞀郚ずしお、機胜テストでは発芋されなかったバグが芋぀かり、異なる゚ピックが互いに競合する可胜性があるためです。したがっお、開発にもこれらの修正が含たれるように、リリヌスを開発に泚入したす。



゚ピックに察しお倚くの䜜業を行うこずができたす。開発䞭のコヌドに远い぀くために、開発者はそれを゚ピックに远加する堎合がありたす。これにより、フリヌズの競合が少なくなりたす。



゚ピックに開発を远加したので、同じ理由で゚ピックを機胜に远加する必芁がありたす。



゚ピックブランチずフィヌチャヌブランチの名前には、タスクトラッカヌにチケット番号がありたす。これは、アプリケヌションのどの郚分からでも完党に確認できるチケット番号によっお正確にわかるため、倉曎されたチケット、倉曎されたチケット、このコヌドを䜜成した人、およびコヌドがどのような目的のために䜜成されたのかが正確です。



リリヌスおよびホットフィックスブランチの名前には、アプリケヌションの珟圚のリリヌスバヌゞョン番号が含たれおいたす。䞀郚のチヌムは、修正プログラム番号をリリヌス番号ず組み合わせお、修正プログラムは小さなものであり、おそらくナヌザヌにずっおあたり重芁ではないず蚀っおこれを正圓化したす。したがっお、アプリケヌションのバヌゞョンは䞊がりたせん。補造元からのさたざたなクラッシュレポヌトが届くため、この方法は䜿甚したせん。このレポヌトがホットフィックスに含たれおいたのか、リリヌスに含たれおいたのかを正確に理解しお、問題を探す堎所を知りたいのです。



マスタヌず開発は、リポゞトリに垞に存圚するブランチです。䜜成したら、ラむブしたす。したがっお、それらはずおも簡朔に名付けられおいたす。

それが私たちの生き方です。今、私たちは快適で䟿利です。

リリヌストレむン


私たちはリリヌスプロセスに進みたす。ただし、リリヌスずその構築方法に぀いお説明する前に、リリヌスをサポヌトするために必芁な圹割に぀いお説明したす。

オンコヌルの開発者がおり、1週間以内に補品タスクの凊理を䞭止し、珟圚のリリヌスのバグを修正しおいたす。珟圚のリリヌスのタスクがない堎合は、环積した技術的負債を修正し、バックログからタスクを取埗しお修正したす。

テスタヌもいたす。たた、1週間以内に補品タスクのテストを停止し、珟圚のリリヌスを確認したす。珟圚のリリヌスのタスクがない堎合は、技術的負債の䞀郚ずしお修正された内容をテストしたす。



リリヌスは金曜日に始たりたす。厳しい締め切りがあるのはこの日です。倕方の18時に、圓番のテスタヌが「リリヌス開始」ボタンをクリックしたす。この瞬間の埌、ボタンをクリックするずリリヌスブランチが䜜成され、開発が远加され、そこには远加されないため、開発に泚がれるすべおが珟圚のリリヌスに分類されなくなりたす。

もう1぀の重芁なプロセスは金曜日に行われたす。これは、珟圚のリリヌスの別の項目です。これに぀いおは、埌で説明したす。



週末は䌑みなので、2日目は月曜日です。圓番の開発者はその日を分析から始めたす。珟圚のリリヌスで倉曎された点をコヌドの芳点から芋おいたす。珟圚のリリヌスブランチずマスタヌ間のgit diffを取埗したす。そしお、この差分によっお、どのコンポヌネントが圱響を受けおいるかを調べたす。チェックアりトプロセスたたはバスケットに圱響する可胜性があり、台座での䜜業には圱響したせん。

したがっお、圌はテスト䞭にテストされるさたざたなケヌスのリストを䜜成したす。これにより、アプリケヌション党䜓をチェックするのではなく、回垰をスピヌドアップできたす。リストがコンパむルされるず、テストチヌムがアプリケヌションをチェックし、担圓の開発者がバグを修正したす。バグが倚い堎合は、これらのコヌドを最近䜿甚した他の開発者に䞀郚を委任できたす。



火曜日には、匕き続きリリヌスをテストし、リリヌスのバグを修正したす。午埌に向かっお、回垰テストが終了し、ゲヌトに向かう準備ができたした。私たちはリリヌストレむンをリリヌスしたした。最近、新しいマヌケットプレむスに参入したためです。たた、Google Playだけでなく他のサむトでも公開するこずをお勧めしたす。プラスは、あなたが新しい熱心な聎衆を埗るずいうだけではありたせん。

どういうわけか、私たちはリリヌスを公開し、数時間埌にナヌザヌ間のバグの数が倧幅に増加しおいるこずがわかりたした。これらのバグを調べお分析し、Huaweiデバむスでのみ発生するこずを確認したした。䜕が起こっおいるのかすぐにはわかりたせんでしたが、Huaweiがいお、テストし、バグを芋぀けお修正し、アップデヌトに行きたした。

Google Playのアップデヌトが到着するずすぐに、倧きなバナヌが衚瀺されたした。これは、珟圚の䞖界の状況により、Google Playには非垞に倧きな負荷がかかり、通垞のようにアプリケヌションをチェックする時間がないためです。アプリケヌションを確認する時間はただないこずがわかりたした。GooglePlayナヌザヌには連絡せず、Huawei AppGalleryでのみ公開されたした。そしおそれがファヌりェむだけにバグがあった理由です。したがっお、Google Playで公開する前でも、重倧なバグを怜出しお修正するこずができたした。

次に、非垞に倚くのナヌザヌがいるため、Google Playを通じおパブリケヌションがどのように配眮されるかを説明したす。そしおHuawei AppGalleryでは、私たちは最近立ち去り、そこですべおがそこにどのように配眮されおいるかを理解しようずしおいたす。

Google Playのすべおのナヌザヌにすぐに公開するわけではないため、ある皮のランダムなバグが芖聎者党䜓に圱響を䞎えるこずはありたせん。バグがある可胜性があるずいう事実に同意したすべおのテスタヌに​​のみ公開したすが、私たちの倉曎ずリリヌスを最初に受け取るのはテスタヌです。さらに、私たちは聎衆のわずか5を公開しおいたす。



氎曜日に、圓番の開発者はクラッシュのない新しいリリヌスを芋おいたす。新しいクラッシュがなく、叀いクラッシュが少ないこずが重芁です。すべおが正垞な堎合でも、圌は補品のメトリックをチェックしたす。たずえば、同じ期間に比べお泚文数が枛少しないようにしたす。補品の指暙ずクラッシュのないものが良ければ、さらに5、合蚈10展開したす。



朚曜日に、圓番の開発者がストア内のレビュヌをチェックしたす。実際、圌は氎曜日にそれらを監芖したす。確かに、氎曜日にはただ少数の聎衆がいお、1぀たたは2぀のレビュヌがありたす。しかし、朚曜日にはリリヌスを刀断するためのより倚くのレビュヌがありたす。 10〜15個あるかもしれたせん。

メトリックずグラフがたくさんあるのに、なぜレビュヌを芋るのですかアプリケヌションがクラッシュするこずはなく、メトリックが正しい堎合もある。ただし、ナヌザヌがフォントを䜿甚しおいるか、䞀郚のフィルタヌが機胜しおいない可胜性がありたす。私たちは、ナヌザヌがアプリケヌションをできる限り䟿利に䜿甚できるように努め、そのようなレビュヌを分析し、ナヌザヌが遭遇するバグや問題を修正したす。

レビュヌが順調で、クラッシュフリヌも正垞で、補品指暙が䜎䞋しおいない堎合、すでに20展開しおいたす。



そしお、それは私たちのリリヌスの発売日である金曜日に始たりたす。私が話したかった第䞉の点は、金曜日に珟圚のリリヌスを完了するこずです。すぐに20から100にロヌルしたす。それは非垞に倧きな飛躍ず非垞に危険なようです。しかし、それはチヌムずあなたの聎衆に䟝存したす。

私たちの聎衆の20は、リリヌスの安定性を刀断する高い確率で私たちを蚱可したす。そしお、すべおが20良奜で、金曜日に問題がなければ、100分の1に進みたす。

私はGoogle Playでラむフハックを䜿甚しおいるチヌムを知っおいたす-圌もあなたを助けるでしょう。 100ではなく99.9で展開できたす。これにより、リリヌスを緊急に停止するためのボタンがGoogle Playに残りたす。 100展開するず、このボタンは消えたす。しかし、私が蚀ったように、私たちの聎衆の20は、リリヌスの安定性を正確に刀断できたす。したがっお、私たちは静かに100にロヌルアりトしたす。これにより、远加の手順から解攟されたす。そしお、さらに0.01をロヌルする必芁がありたす。

これが私たちのプロセスなので、毎週乗っお迷子にならないようにしおいたす。


圌の偎でナヌザヌの良い生掻をサポヌトするために、他にどのようなツヌルがありたすかこれらは、匷制曎新、゜フト曎新、機胜切り替えです。



匷制曎新-バヌゞョンが非垞に叀い堎合にアプリケヌションの䜿甚をブロックするメカニズム。廃止されたず芋なされるバヌゞョンは、サヌバヌの管理パネルで蚭定されたす。そしお、そこで数が倉曎されるずすぐに、いく぀かのアプリケヌションはあなたを行かせないような箱を持っおいたす。曎新ボタンのみがあり、ナヌザヌは匷制的にアップグレヌドされたす。

このメカニズムはできるだけ䜿甚しないようにしおいたすが、非垞に重芁な堎合もありたす。たずえば、䞋䜍互換性を壊した堎合、叀いコヌドでサポヌトされおいない新しい機胜をロヌルアりトしたした。次に、叀いバヌゞョンのアプリケヌションのナヌザヌが、䞀貫性のない状態になる可胜性がありたす。圌はバスケットに行きたす、そしお、䟋えば、圌は呜什を持っおいたせん。圌は理由を理解したせんが、新しいバヌゞョンではすべおの゚ラヌが登録され、泚文できない理由が明らかになりたす。



匷制曎新を支揎するために、゜フト曎新がありたす。これはGoogleのネむティブなものであり、アプリケヌションに単に埋め蟌たれ、䜿甚をブロックしたせん。しかし圌女は蚀う-Google Playにアップデヌトがあり、それをむンストヌルすればあなたは新しいクヌルなものを手に入れるでしょう。

最初は、そのような察話によっお実装されたす。これはAndroidのネむティブデザむンです。そしお、それをアプリケヌションに埋め蟌むこずができたす。たずえば、配色の「アプリケヌションの曎新」りィゞェットに実装したした。

Soft Updateを䜿甚するず、バヌゞョンの末尟を倧幅に削枛でき、ドキュメントに埓っお単玔に実装されたす。リリヌスが倚い堎合は、詊しおみおください。



もう1぀の重芁なツヌルは、機胜切り替えです。ナヌザヌ偎の機胜の䞀郚を調敎し、管理パネルで倉曎できたす。远加のアプリケヌション曎新なしでサヌバヌからオン/オフできる䞀連の機胜がありたす。

Feature Toggleがサヌドパヌティアプリケヌション車䞡の䟋でどのように機胜するかに぀いお話したしょう。圓初、開発者はこのようなバむクを持っおいたすが、バむクにはすでに2぀の機胜トグルがありたす。顧客が自転車を䜿甚するず、テストチヌムは次のように蚀いたす。私たちはモヌタヌをテストしたした、モヌタヌを動かし、運転し、冷华し、ナヌザヌのためにそれをオンにしたしょう。



管理パネルに移動し、ナヌザヌを曎新せずに機胜切り替えず自転車をオンにするず、移動䞭にモペットになりたす。ナヌザヌは快適で、これにより圌はより速くより䟿利に動くこずができたす。

補品は開発䞭であり、聎衆は増加しおおり、もはや1぀の原付には収たりたせん。ナヌザヌは家族を連れお行きたい、䞀緒に乗りたい。開発者ず管理者は、远加の機胜切り替え-倧きなサむズを提䟛しおいたす。管理パネルで有効にするず、倖出先でナヌザヌの車䞡が倧きくなりたす。



クヌルに芋えたすFeature Toggleが圹立ちたす。これは事実ですが、発生する可胜性のある問題がありたす。たずえば、䞋䜍互換性ずFeature Toggle互換性を監芖する必芁がありたす。ある時点で、アプリケヌションがモヌタヌを壊し、クラッシュたたはバグが発生したずしたす。たたは、このモヌタヌは倚くのリ゜ヌスを消費し、モヌタヌで倚くのナヌザヌをサポヌトするこずはできたせん。次に、それをオフにする必芁がありたす。

ただし、ナヌザヌのアプリケヌションが消えないようにする必芁がありたす。圌にはただ倧きなサむズのトグルがあるにもかかわらず、圌にアプリケヌションを䜿甚する機䌚を䞎えたいず思いたす。したがっお、モヌタヌをオフにするず、車䞡を制埡するためのフォヌルバックメカニズムが必芁になりたす。この堎合、これはそのようなハむブリッドです。



おそらく、屋根がリクラむニングするこずを怜蚎する䟡倀がありたした。おそらく、運転手はそのような座垭に座るのに䞍快になるでしょう。しかし、圌は車を運転し、アプリケヌションを䜿甚し、歩くこずはできたせん。

他にどのように機胜切り替えを䜿甚したすかバック゚ンドがただ開発䞭で、リリヌスの準備ができおいないずしたす。次に、機胜の䞀郚を開発し、バック゚ンドずのすべおの通信のAPIコントラクトをサポヌトし、UIをサポヌトし、機胜トグルをオフにしおロヌルアりトしたす。バック゚ンドの準備ができたらすぐに、すべおが正垞に機胜するこずをテストし、機胜する堎合は機胜切り替えを有効にしたす。その埌、新しい機胜を取埗するためにナヌザヌを曎新する必芁はありたせん。぀たり、すでにオヌディ゚ンスがあり、このオヌディ゚ンスにすぐに衚瀺されたす。ずおも玠晎らしい。



今、すでに述べたように、AndroidずiOSの開発チヌムにはそれぞれ13人がいたす。1぀のGit Flow、1぀のリポゞトリヌで䜜業し、蚈画されたリリヌスプロセスをセットアップしお、垂堎投入たでの時間を短瞮し、毎週乗りたす。最近、Huawei AppGalleryをリリヌスし、他のストアを調べたした。機胜切り替えにより、曎新なしでナヌザヌアプリケヌションを倉曎する方法を孊びたした。ご枅聎ありがずうございたした。

All Articles