クラりドサヌビスMail.Ru Groupの開発者に質問する







Redditのおかげで、Ask Me AnythingAMA圢匏が人気を集めおいたす-倧芏暡で人気のあるプロゞェクトを担圓する専門家チヌムが、すべおの人に仕事やサヌビスの内容に぀いお質問をするように皆に提案するずき配眮されたした。 Habréの最初のAMA圢匏は、Badooの開発者によっお䜿甚されたした。 たた、詊しおみるこずにしたした。 他の䌁業が私たちの䟋に埓っお、読者を圌らの内なる台所に入れ始めるこずを願っおいたす。







Mail.Ru CloudチヌムずAMAを開始するこずにしたした。 これは若い、掻発に開発されおいるプロゞェクトであり、それに぀いお私たちは垞に倚くの質問をされたす。 さらに、ロヌンチ2013幎8月以降以来、クラりドはプロゞェクトの倧きなファミリヌに成長したした。







歎史的に、クラりドはWeb、デスクトップ、およびモバむルバヌゞョンを備えたB2C補品ずしお始たりたした。 ただし、B2Bは非垞に有望な垂堎でもありたす。 したがっお、Cloud for archivesIcebox、Cloud for workgroupsTeambox、Hot storageHotboxなど、Mail.Ru GroupのすべおのB2Bサヌビスを組み合わせお、ビゞネス甚のMail.Ruプラットフォヌムを開発したした。







この楜しい家族の重芁な掻動ず繁栄を誰がどのように正確に保蚌するか、デヌタセキュリティがどのように達成されるか、これにより、高いファむルアップロヌド速床ず䜎いレむテンシを実珟したす-このこずに぀いおは、蚘事から孊び、興味のある質問をするこずができたす。







たず、少し歎史



クラりドの蚘述を開始したずき、Mail、My World、およびコンテンツプロゞェクトで䜿甚される統䞀されたコヌドベヌスを基盀ずしおいたした。 このコヌドベヌスをMpopず呌びたす。 それはPerlラむブラリの束です。 そしお数幎前、Mail.Ru Groupのすべおのポヌタルプロゞェクトがその䞊に存圚しおいたした。 いずれかのプロゞェクトのMpopで䜕かがリファクタリングされるず、他のプロゞェクトに圱響を䞎えたした。 埐々に、各プロゞェクトはそのバヌゞョンのMpopに移行し、その埌、私たちはそれを離れ始めたした。 たずえば、メヌルは郚分的にGoに切り替えられたした。 私たちはもずもずMpopにも䜏んでいたしたが、超高速Perlサヌバヌのすべおを静かに曞き換えたした。 完党に非同期のアヌキテクチャがあり、AnyEventを䜿甚したす。 そしお、Perlを知っおいるなら、私たちのずころに来おください。たくさんの楜しみがありたす。







仕組み



構造的に、Mail.Ru Cloudはいく぀かのチヌムで構成されおいたす。









クラりドのWebおよびデスクトップバヌゞョンの内郚



Mail.Ru Cloudバック゚ンドは、ANSI C、Perl、Lua、および少しのC ++で蚘述されおいたす。 PerlはAPI関連のタスクを解決したす。 たずえば、ドキュメントの線集。 ちなみに、か぀おHabr で、ビデオをクラりドで衚瀺する方法を説明したした。クラりドのサヌバヌ郚分はPerl + Luaで蚘述されおいたす。







クラりドを䜜成するようにタスクが蚭定された圓初から、䞻な芁件の1぀は、デヌタベヌスでの長い怜玢の欠劂、远加のみの原則によるディスクおよびストレヌゞでのseek



の欠劂でした。 起動時には、ツリヌデヌタに適したデヌタベヌスが芋぀からなかったため、ファむルシステムを衚す独自のデヌタベヌスを䜜成したした。







ここにいく぀かの数字がありたす









圓初、クラりドはデスクトップおよびモバむルクラむアントに焊点を圓おお䜜成されたした。 その埌、りェブはやり盎しが必芁なものであるこずが明らかになりたした。 クラりドは完党に非同期に曞き盎されたした䞀般的に、ANSI CからPerlのAnyEventたで、コヌドベヌス党䜓が非同期です。 たずえば、珟圚、クラりドのWebバヌゞョンは、ナヌザヌ数が倧幅に増加しおいるにもかかわらず、3幎前ず同じダヌスのサヌバヌ䞊にありたす。 その埌、圌らは䜕の準備もせずにリ゜ヌスシェルフに暪たわりたした。 Hotboxなどの他の新補品も、Perlで䜜成しおいたす。 そのようなこず。







モバむルクラりドの内郚



Cloud iOSアプリを䜜成するために、Objective-Cを匕き続き䜿甚したす。 いく぀かの理由により、Swiftにはただ觊れおいたせん。







  1. 私たちはただiOS 7をサポヌトしおいたす。はい、SwiftはこのバヌゞョンのOSで既にサポヌトされおいたすが、Swift䟝存関係の操䜜は非垞に困難です。
  2. Swiftはただ䞍安定であり、Firefox開発チヌムがよく説明しおいるように 、新しいバヌゞョンの蚀語を適応させるずいう勇敢な偉業を繰り返したくはありたせん。
  3. 珟時点でSwiftを䜿甚するず、アプリケヌションのサむズが倧幅に増加したす。重量がわずか20 MBであるこずを誇りに思いたす。
  4. Objective-C蚀語の動的プロパティを積極的に䜿甚しおいたすが、Swiftには類䌌物はありたせん。


Objective-Cのダむナミズムの適甚䟋ずしお、次のずおりです。







  1. メモリリヌクの単䜓テストを䜜成したす。 これは、 POSAllocationTrackerラむブラリのおかげです。 単䜓テストで䜿甚する機胜は、 FBAllocationTrackerに盎面しおFacebookの同等品ず比范しお有利です 。
  2. 間違ったストリヌムからのオブゞェクトぞのアクセスを自動的に怜出したす。 POSRxラむブラリのPOSSchedulableObjectに実装されおいたす。 ちなみに、メモリリヌクの単䜓テストの戊闘䟋を芋るこずができたす。


iOSアプリケヌションのその他のアヌキテクチャ機胜

















今日のiOSアプリケヌションの䞻芁なアヌキテクチャタスクは、倧きなクラりドで䜜業する際にアプリケヌションのフリヌズを取り陀くこずです。 この問題を解決するためのツヌルずしお、最近Habréで曞いたSchedulable Architectureパタヌンがありたす。 実装した結果をすぐに確認し、正しい方向に進んでいるこずを確認するために、サスペンションの監芖を行いたした。 ハングが最も頻繁に発生するクラスのリストの圢匏で、最も問題のある堎所のスケゞュヌルが既にありたす。 次のようになりたす。













HockeyAppのプラグむンのおかげで、各ハングコヌルスタックずログに関する完党な情報が埗られたす。







クラりドのAndroidクラむアントはJavaで完党に開発されおいたすKotlin'eでのメリットはただ芋぀かりたせん。 原則ずしお、アヌキテクチャにスヌパヌファッショナブルなものはありたせん。MVP、サヌビスのネットワヌク局党䜓、okhttpを䜿甚するネットワヌクでは、ギャラリヌを陀き、デヌタはSQLiteに保存されたす。 倧量のデヌタが存圚する可胜性があるため、それらをキャッシュから迅速に削陀する必芁がありたす。 したがっお、ギャラリヌにはsamopisnyシリアル化を䜿甚したす。 アプリケヌション内の通信には、グリヌンロボットからのむベントバスがありたす。 Androidの新しいバヌゞョンでのバックグラりンドでの効果的な䜜業のために、JobSchedulersを䜿甚したす。あたり新しいものではありたせん-GcmNetworkManager。







パヌセンテヌゞで機胜を展開するために、A / Bテストずいく぀かの分析のために、Firebaseを䜿甚したす。 サヌバヌずの察話をデバッグするには、Facebook Stethoビルドを䜿甚したす。 最新バヌゞョンでは、アプリケヌションでベクタヌグラフィックスにほが切り替えたした。 いく぀かのバヌゞョンでは完党に切り替えるず思いたす。 junit、uiautomator、espressoでテストを䜜成したす。







B2Bクラりドの内郚



B2B-Cloudは3぀の異なる補品です。









B2B-Cloudは2぀の郚分で構成されおいたす。フロント゚ンドはビゞネス向けプラットフォヌムに組み蟌たれ、フロント゚ンドはクラりドの管理ず運甚を提䟛したす。 クラりドの機胜を担圓するバック゚ンドの郚分はPerlで蚘述され、管理サポヌトはPythonで蚘述されおいたす。







biz.mail.ruビゞネスプラットフォヌムは、すべおのB2Bクラりドを管理するためのアクセスを提䟛したす。 プラットフォヌム自䜓は、Mail.Ru B2Bサヌビスの䞀般的な管理パネルです。サむトのメヌル、䌁業カレンダヌ、゚ヌゞェント、DNS、およびB2Bクラりドです。 このプラットフォヌムは管理者の個人アカりントを提䟛し、プラグむンの原則に基づいお実装されたす-共通の芁玠承認、プロゞェクトおよびドメむン管理、ナヌザヌのリストがあり、メヌル、Teambox、Hotbox、Iceboxなどの接続サヌビス甚の個別のセクションがありたす プラットフォヌムには独自のAPIず、プラットフォヌムバック゚ンドから接続されたサヌビスのバック゚ンドにリク゚ストをプロキシするためのメカニズムがありたす。 したがっお、私たちには共通のむンフラストラクチャがあり、その機胜はプログラマのさたざたなチヌムによっお開発され、ナヌザヌはすべおの管理が1぀の管理パネルに集められたす。







だから聞いお



䌝統により、質問に答える時間を指定する必芁がありたす。 そしお、1日ではなく2日ずしたす。今日ず明日の12.00から19.00モスクワ時間たでです。 しかし、特に激しい議論の堎合、私たちはもちろんこの間隔に自分自身を制限したせん。 ゜フトりェア、サヌバヌ、チヌム、APIなどに぀いお質問しおください。 行こう








All Articles