こんにちはHabr!
先日、若いオープンソースプラットフォームOro Platform (BAP)のリリース。 残念ながら、このイベントはインターネットのロシア語圏では強調されていなかったので、この省略をあなたの許可で埋めたいと思います。
この記事は、プラットフォーム上の出版物のサイクルの紹介であるため、概要的な性質のものです。 誰がそれを気にしている-猫へようこそ。
BAP ( Business Application Platform )は、ビジネスアプリケーションを開発するためのプラットフォームである恐るべき名前です。 私たちはそれぞれ、特定のタスクの実装中に、これまで使用したサービス/プログラムの既存の機能との類似性に気づいたという事実に直面したと思います。 それで、私はこのアプリケーションの一部を自分自身に持って行き、少しファイルして、出来上がりたいです! この目的のために、プラットフォームを作成することを決定しました。これを使用して、アプリケーションのビジネスドメインの開発に可能な限り集中し、日常業務を肩にかけることができます。
そもそも、この製品の開発の起源、生年月日、モチベーション、すでに達成された見込みと成功について、少しお話したいと思います。
歴史ツアー
Oro Platformの誕生は、 OroCRMで書かれた最初の製品の開発の開始に直接関係しています。 2012年12月、Dima Soroka、Yoav Kutner、およびJary Carterは、共同創立者の1人であるYoavを含むMagento Corporationでの仕事でeコマースの世界の多くの人に知られ、ビジネスベースの新しいCRMシステムプロジェクトを実装することを決定しましたeコマース。 CRM自体は別の投稿のトピックだと思うので、今のところは忘れましょう。
新しいプロジェクトの開始とともに、解決する必要のある多くの標準タスクが登場しました:REST + SOAP API、データグリッド+フィルタリング、検索、インポート/エクスポート、システム設定、データ移行、タスクスケジューラ(cronタスク)など。 残念ながら、PHPの世界は、前述の機能の少なくとも一部を備えた複雑なCMFソリューションに特に富んでいるわけではありません。 個人的には、 Word PressのストアとCRMに混乱しています 。Redmineに基づくCRMと、 Magentoのフォークでさえ、カタログ/販売に関連する機能がカットされていることを思い出します。 この段階で、この分野での質の高いソリューションの欠如に気づきました。 そのため、2012年12月2日に最初のコミットが見つかりました。
技術スタック
Magentoのサクセスストーリーに基づいて、PHPを選択しました。 この言語の長所と短所については長い間議論することができますが、論争しにくい事実の1つはその人気です。 使用される技術の完全なリストは次のとおりです。
- PHP 5.4.9 +
- 作曲家
- Symfony2フルスタック
- ドクトリン2
- 小枝
- MySQL + PostgreSQL
- jQuery
- BackboneJS + ChaplinJS
- RequireJS
- nodeJs(JSミニフィケーション用)
- ラチェットWebSocketサーバー
- ブートストラップ2.3
- 少ない
ツールの選択は、ドキュメント、コミュニティと開発の可用性と完全性、 安定バージョンとLTSバージョンの可用性という主要な基準に従って行われました。
リストは非常に多彩であることが判明しました; phpの多くのベクトルはそれらをトーンアップさせます。 残念ながら、このリストのすべてのツールが完璧であるとは言えません。 主な問題のうち、ドクトリンの設計は必ずしも容易に拡張可能ではない、作曲家のヴォラシティ(更新に1.2 GB以上のメモリが必要)、BackboneJSの自由度(その後ChaplinJSが追加され、 AngularJSが本格的に研究されました)。
すでにSymfony2を扱っている開発者は、ここで2回以上使用しなければならない人気のあるバンドル(モジュール)を見つけるでしょう。
ネタバレの下で、それらのいくつか
- KnpMenuBundle
- KnpGaufretteBundle
- FOSRestBundle
- FOSJsRoutingBundle
- LiipImagineBundle
- GenemuFormBundle
- NelmioApiDocBundle
- BeSimpleSoapBundle
- JMSSerializer
- JMSJobQueue
- ...
コミュニティ
現時点では、プラットフォーム自体の周りのコミュニティは大きくありませんが、時間の経過とともにこの欠点は平準化されるように思えます。 Symfonyフレームワークを中心に構築されたエコシステムは、オープンソース製品のベンチマークであり、関心があります。また、別のsymfonyベースの製品-SyliusのコミュニティのメンバーであるLukas Smith( LiiPから)のようなコミュニティメンバーの貢献は、方向。
アプリケーションは問題なくローカライズできるように作成されており、 クラウド翻訳サービスが統合されているため、コミュニティの発展の地理的条件は限定されないことに注意してください。 私の知る限り、ロシア語への翻訳は現在進行中です。 プラットフォームの開発への貢献は、開発とドキュメントの開発の両方によって行うことができます。
実績
それで、成功を発表する時が来ました。間違いなく成功は、スタートアップがGAリリースに到達したことです。 現時点では、プラットフォームを使用する3つのアプリケーションを認識しています。
製品情報管理 -フランスのAkeneoから、現在のバージョン1.2.9
DiamanteDesk ( ヘルプデスクソフトウェア )-ウクライナのEltrinoから、現在は初期ベータ段階(ロードマップから判断)
Interactive4 在庫管理システム 、残念ながら詳細はわかりません
Akeneoには特に注意を払いたいと思います。彼らは製品の開発のために230万ドルの投資を既に受けているからです。 SensioLabs(Symfonyの創設者)もプラットフォームを内部製品の基盤と考えていましたが、残念ながら、使用する/使用しないという決定はわかりません。
品質管理には、travisCIを含むCIシステムが使用され、プラットフォームコードは単体テストでカバーされます(約70%)。 PHP PMD 、 Scrutinizer 、 SensioLabsInsightなどの静的コードアナライザーだけでなく、コード標準( PSR-2を使用)との互換性を監視するためのビルドもあることに注意してください 。
現時点では、プラットフォームには54のバンドルと2つのコンポーネントがあります。
腐敗中のそれらのいくつかの説明
- UserBundle-ユーザー認証、システムユーザー管理、ユーザーグループ
- DashboardBundle-カスタムダッシュボード管理。カスタムウィジェットを記述するための抽象化を提供します
- DataGridBundle-グリッド形式のデータ視覚化、各レコードまたは複数のレコードでアクションを実行する機能、表示されたデータのエクスポート
- FilterBundle-システムで使用できるフィルターのセットを提供し、独自のフィルターを作成するためのインターフェースを提供します
- ImportExportBundle-インポート/エクスポート機能を記述するための抽象化を提供し、基本的なリーダー/ライターのセットがすぐに使える
- RequireJSBundle- RequireJSをsymphonyアプリケーションに統合し、このブートローダーの構成オプションを提供します
- ThemeBundle-アプリケーションの外観を装飾するテーマのサポートを提供します
- TrackingBundle- Piwikの JS部分に基づいて、サイト上のユーザーの行動を追跡する機能を提供します
- TagBundle-教義エンティティにタグ付けを追加する機能を提供します
- ConfigBundle-構成ツリーの機能を提供し、既成のシステム構成ツリーも付属しています
- ChartBundle-グラフ内のデータを視覚化するための抽象化、 Flotr2との統合を提供します
- FormBundle-便利なコンポーネントフォームのセットが含まれています
- MigrationBundle-スキーマとデータを移行するためのメカニズムを提供します
- CronBundle-定期的なタスクをスケジュールに従って実行する機能を追加するJMSJobQueueのラッパー
- DataAuditBundle-データ変更のロギング、データのバージョン管理
- LocaleBundle-アプリケーションのローカライズ。PHPパーツとJSパーツの両方で使用するためのフォーマッターのセットが含まれています
- SearchBundle-検索エンジンを記述するための抽象化。MySQLおよびPostgreSQL用のエンジンが含まれています
- ReportBundle-視覚的なレポートエディター
- ... など 後続の記事で詳細
免責事項
結論として、このソリューションはすべての問題を解決するふりをしているわけではなく、逆に、私の意見では、この製品の使用はビジネスアプリケーションの狭いニッチに限定されていると言わなければなりません。
この記事は概要的な性質のものであり、これに関連して技術的な詳細は記載されていません。 著者は、この製品の中心的な開発者の一人です。 この記事は個人的な理由で著者によって書かれたものであり、本質的に広告ではありません。
テキストの不正確またはエラーに関するメッセージは、プライベートメッセージで歓迎されます。
githubへのリンク。
ご清聴ありがとうございました!