ホームページ  >  記事  >  バックエンド開発  >  phper はどのようにしてアーキテクチャに成長するのでしょうか?

phper はどのようにしてアーキテクチャに成長するのでしょうか?

WBOY
WBOYオリジナル
2016-06-17 08:31:30815ブラウズ

私は 5 年以上 PHP に取り組んでおり、アーキテクチャ レベルの PHP を開発したいと考えています。アーキテクチャ レベルで習得するにはどのような知識が必要ですか?また、段階的なプロセスは何ですか?より具体的にしてください

返信内容:

Laruence 氏は次のように述べていたのを覚えています:

PHP ->C ->Linux プログラミング ->
それから私は、C、拡張機能、Linux を学ぶために一生懸命働き始めました...

ある日、ニマ、これはまだ PHPer なの? ということに気づきました。
==========私は境界線です==============

追加:

これに限定されませんphp アーキテクトが存在し、php タグを記述します。
Web アーキテクトに方向を変えると、道はより明確になります。 PHP リクエストは受信時に処理され、リクエストが完了すると破棄されます。ライフサイクルの 1 つの層のみを制御するプログラムとして。アーキテクトになることは、Nginx、PHP-fpm、Memcache、HaProxy、MySQL、その他のソフトウェアを構成することに他なりません。

PHP プログラマーは、マルチプロセス、マルチスレッド、ソケット、Epoll など、基礎となるシステムとネットワーク通信の知識を習得する必要があります。 PHP カーネル、拡張機能の開発、および C/C++ はすべて学習する必要があります。ネットワーク通信については、swooleを参照することをお勧めします。 Swoole: PHP の非同期、並列、分散拡張機能
私はアーキテクトになることを目指して努力しています。個人的な意見ですが、参考までに: アーキテクトの最も基本的な責任は、大規模なシステムを、プログラマが処理できる一連の小さなモジュールに分解し、技術的な問題が発生したときにそれを支援することです。 。このことから、PHP アーキテクトが習得しなければならないことは次のとおりです。
1. データ構造とアルゴリズム。少なくとも、それを使用でき、セットをいつ使用するか、いつキューを使用するか、いつソートキューを使用するか、各データ構造がどのような操作をサポートするか、および適切なデータを使用できるようにする必要があります。実際的な問題については、構造の説明を参照してください。
2. データ ストレージ: MySQL Redis など。非パラダイムを構築するためのリレーショナル データベースと非リレーショナル データベースの理論。実際の問題を適切なデータベース構造に落とし込みます。 「SQL クエリの開始」、「Redis の開始」、および「MySql Technology Insider」を読むことができます。
3. Web サーバー: Nginx、Lighttpd。 「Nginx の詳細な理解」を読むことができます
4. キャッシュ: ブラウザー、フロントエンド サーバー、およびバックエンド サーバーのマルチレベル キャッシュ。 「高パフォーマンスの Web サイトの構築」を参照してください
5. メッセージ キュー: 非同期データ書き込みの実装計画。
6. 設計理論: オブジェクト指向、オブジェクト指向の基本原理、設計パターン、リファクタリング、コード アーキテクチャ パターンについての深い理解。推奨: 「デザイン パターン」、「ビッグ トーク デザイン パターン」、「リファクタリング」、「アジャイル ソフトウェア開発: 原則、パターン、実践」。
7. 設計ドキュメントの作成: アーキテクトは、基本的なドキュメント作成スキルに加えて、Visio などの描画ツールを理解している必要があります。
8. ソフトウェアエンジニアリング: アーキテクトは、ウォーターフォール方式、スパイラル反復方式、アジャイルなど、担当するプロジェクトに適した開発プロセスを選択する能力が必要です。良いか悪いかはありません。適切か不適切かだけです。 ;

PHP のみを必要とするプロジェクトの場合、上記の能力があればアーキテクトのポジションに就くことができます。要約すると、アーキテクチャをやりたい場合は、PHP が単なるサーバーサイドのスクリプト言語であると自分自身を位置づけないでください。

しかし、次のような問題もあります。

PHP プロジェクトの規模が大きくない限り、その価値は大きくありません。 PHP は単なるスクリプト言語であり、ビジネスを行ったり、製品のプロトタイプを迅速に構築したりするのに適しています。製品規模が大きくなるとバックエンドはJavaやC++などの静的言語に移行するのは間違いありません。 Java や C++ などの言語を知らない場合。それでは、素晴らしい建築家にはなれないのではないかと思います。

これは非常にややこしい質問ですが、長年 PHP を書いてきた人は Java 陣営と C++ 陣営のどちらに移るべきかということです。私が会ったアーキテクトは、PHP、C++、Java で書くことができます。 言語を知っていて、アーキテクチャを構築したいと思うのは、単なる思いつきです。
現在、フレームワークや多くの言語は言うまでもなく、多くのフレームワークが相互に学習しています。
しかし、これらは建築家にとって重要ではありません。


どのようなスキルが必要ですか? まず、建築家が達成したい目標を見てみましょう。 全体を制御する必要があるが、局所的なボトルネックを理解し、特定のビジネス シナリオに基づいたソリューションを提供する必要がある
システム要件の確認と評価、開発仕様の提供、システム実装のコア アーキテクチャの構築、技術的な詳細と明確な明確化上 メインの難易度。主にシステムの「技術的実装」に焦点を当てます。したがって、彼/彼女はこうあるべきです 特定の開発プラットフォーム、言語、およびツールのマスターは、一般的なアプリケーション シナリオに最も適切なソリューションを即座に提供できると同時に、開発チームを十分に理解し、特定の機能を実装するために自分のチームを評価できなければなりません。 需要には価格が必要です。 システムアーキテクトは、システムの全体的なアーキテクチャを設計する責任を負い、要件から設計に至るあらゆる詳細を考慮し、設計されたプロジェクトを可能な限り効率的に、開発しやすく、保守しやすくするためにプロジェクト全体を把握する必要があります。アップグレードが簡単。
百度百科事典からコピーしました。

上記は要点を抜粋したものです。
  • 「ビジネスシナリオ」を理解した上で解決策を提供します。
  • 所属する開発チームを十分に理解していること。
  • プロジェクトのリスクを管理します。
  • 開発プロセスとシステムアーキテクチャの設計、制御、実装のため。

テクノロジーを理解します。洗練されている必要はありませんが、幅広い知識が必要です。ニーズに応じてアーキテクチャを適切に設計し、開発プロセスを標準化し、技術的な制御を行うことができます。開発におけるリスク。

ビジネスを理解し、ビジネス シナリオを一般的に理解しており、少なくともプロのビジネス担当者とコミュニケーションをとる際に障害がなく、シナリオに対する正しい需要分析ができる必要があります。

マネジメントを理解するには、主にチーム、タスク分解のリスク、要件の正確な伝達を理解することが含まれます。



とはいえ、ビジネスを知らずに建築をやっても大丈夫なのでしょうか?いいえ!

もし普遍的なアーキテクチャがあれば、これほど多くのアーキテクトは必要ありません。あらゆるビジネス分野が普遍的なアーキテクチャを見つけるだけです。たぶんそれは普遍的ではありませんが、ほぼ同じですか?そう、この「ちょっとした癖」は、下手をすると人を殺す可能性があるのです。

もちろん、インターネット時代には多くのビジネスモデルが革新的であり、このビジネスの運営方法を誰も理解していません。そうすると、アーキテクトに対する要件も変化し、何が起こるでしょうか?いわゆる「アジャイル開発」、反復更新。ということは、建築家はビジネスを理解する必要がないということでしょうか?いいえ、これは単に石を感じながら川を渡り、ボトルネックに遭遇する前に経験を積んで再建を強化するだけの問題です。

私は卒業したばかりで半年ほどの経験しかありませんが、PHP をお金を稼ぐのではなく、純粋に技術的な研究として扱うと、ソースコードを徹底的に研究し続けることができることがわかりました。追求。私はまだ十分なお金を稼いでいないので、他のことを学び、さらにいくつかのスキルを習得し、十分なお金を稼いだ後は PHP の素晴らしいプロジェクトに集中することしかできません。 あなたのキャリアを PHP に結びつける必要があるのはなぜですか? PHP で数年間働いた後、すぐに次のことに切り替えるでしょう。

c/c++ -> Java シリーズ フレームワーク -> jvm シリーズ言語

C/C++ の優れたオープン ソース サーバーには、次のようなものがあります。
nginx は優れたパフォーマンスを備え、
優れた設計は比類のないもので、
トラフィック サーバーは優れた設計とパフォーマンスを備え、

javaも人気が高く、おすすめです。 「Java Concurrent Programming in Practice」を見れば、外の世界がいかにエキサイティングであるかがわかります。
jvm シリーズの言語には、scala 言語の kafka、優れたメッセージ キュー、ストームなど、多くの選択肢があります。

それでも php をさらに詳しく知りたいが転送したくない場合は、hhvm が良い選択です。
腐った木にしがみつくより、知識を得る方が、zend php 拡張機能の書き方を学ぶことに時間を費やす方が、寝るよりも良いです。 あなたの意見を聞かせてください。豚が走っているのを見たことしかない人のものです。

アーキテクトの責任は全体的なソリューションを提供すること、つまり、要件の読み取りから機能設計、テクノロジーの選択、最適化と再構築、テストに至るまで、機能実装のための具体的な計画を与える責任があることを理解しています。リリースのロールバック、さらにはコーディング スタイルを指定する必要があります。

これらすべてが 1 つ以上のドキュメントに反映されるため、アーキテクトにはドキュメント機能が必要であり、出力ドキュメントの品質を決定するのは、要件機能や設計の読み取りと理解など、アーキテクトの中核となる機能です。能力と技術的な幅広さと奥深さ。

建築家にとって、要件の理解と抽象的な設計は、この2つが一定のレベルに達していなければ、建築家としての資格は得られないはずです。
さらに、テクノロジーの選択は、チーム全体が将来依存するテクノロジーの傾向を決定する非常に重要な要素であり、多くのことを比較検討する必要があります。
ワークフローの設計も非常に重要であり、優れたワークフローはチームの効率を大幅に向上させることができ、自動化をさらに導入するためにどのように協力するかということもアーキテクトが考慮する必要がある問題です。

純粋な PHPer がアーキテクトになるのは、アーキテクトの肩書だけを持った 2 人か 3 人がいる潰れた会社でない限り、困難です。

視野が狭すぎるから。

建築家には幅広い知識が求められ、1 つの言語を知っているだけでは十分ではありません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。