本日、DevOpsテーマに「没入」することを考えていたJavaおよびPython開発者が、Oracle Weblogicおよびシェルスクリプトを使用することを支持して、通常のツールからますます離れ始めた状況を調べることにしました。 彼は、開発分野での経験と、プロセスを扱う新しい経験とを組み合わせることにしました。
QuoraのDevOpsエキスパートの主なヒントを見て、 1cloudチームの例でストーリーを補完しました。
Jonathan Fenochchi(BazaarvoiceのDevOps開発者):クラウドでの作業とDevOpsテーマの作業を本当に楽しんでいます。 多くの場合、この用語は、システムプログラマー(インフラストラクチャ開発者、システム開発者、プロセス(運用)開発者、または最も不適切な方法でシステム管理者とも呼ばれる)を表すために使用されます。
DevOpsはこれをまったく意味しませんが、キャリアの成長という文脈では、これらの定義は「現代の」システムプログラマーが行うことの理解を反映しています。
したがって、あなたは開発者であり、プロセスの操作に進みたいと考えています。 ここで驚きが待っています。 全体のポイントは、Arch LinuxをインストールしてPerlの学習を開始することではありません。 この種のものには一定の場所があります(宇宙の最も遠い隅にある非常に小さくて暗い)が、まずはDevOpsとは何かを定義しましょう。
DevOpsの分野で機能することの意味:
- ソフトウェア開発;
- ツール開発;
- インフラストラクチャ設計。
- 複雑な問題の定期的な解決;
- スケーリングが必要なため。
- * NIX;
- モニタリング;
- 仮想化
- 午前2時に停電が発生したときに連絡を取るため
- メンテナンス(たとえば、仮想ホストのメモリリークの問題の解決);
- 柔軟な開発方法論。
- ソフトウェアリリースのサイクルと制御。
- 自動化、自動化、自動化。
- メトリック/レポート(監視と並行して);
- 特定のSMS(SCM)(git、Mercurial、svnなど)の製品ブランチとリリースを使用するための計画の開発。
- IB;
- クラウド技術。
- 最適化/微調整;
- 負荷/パフォーマンスのレベルのテストと測定。
- 構成管理(Puppet、Chef、Ansibleなど);
- 認証サービス
- パッケージ管理システム。
- コマンドライン(awk)を使用する機能。
- 負荷分散/プロキシ(サービス、システム、コンポーネント、およびプロセス);
- CI / CIT / CD-継続的な統合、統合テスト、および新しいバージョンの展開(展開);
- データベース(SQL、NoSQL、違いなし);
- システム(ネットワークスタック、ハードドライブ/ファイルシステム/システムメモリ/プロセッサ)の強力な知識。
DevOpsの分野での仕事が意味するものではないもの:
- シンプルさ(ソフトウェア開発と比較);
- プログラムする必要はありません。
- Linuxをインストールして、お気に入りのOSに別れを告げます。
- ソフトウェア開発者よりもはるかに興味深い。
- まったく新しい分野の仕事。
DevOps開発者としての地位を確立するために必要なことがいくつかあります。
DevOpsを必要とする会社でインタビューを受けてください。 雇用されている場合は、プロセスを操作する方法をすぐに学習できます。 とても速い。 それ以外の場合は解雇されます。 解雇されていない場合は、本格的なDevOps開発者のレベルに到達するために何が欠けているのかを理解できます。
ソフトウェアではなく、ツールを構築するためのソフトウェア開発者としてのスキルを使用して、経験を積んでください。 OpenStackを調べてください。 コンポーネントの区別とその重要性を理解することが重要です。
運用に関連するすべてのプロセス(展開、スケーリングなど)に参加します。 チームがこれを行わない場合(たとえば、オペレーションを担当する部門にすべてを送信する場合)、オペレーションに関与する担当者に連絡して、いくつかの展開プロセスを確認する必要があります。
かなりの経験が必要ですか? 私は何度も自分にこの質問をしました。 私は開発に着手し、1年も経たないうちに運用を担当して、DevOps開発者になりました。 目立ったアルゴリズム能力はありませんでしたが、私の開発経験はまともでした。 優れた開発者は、ソフトウェアの作成とその開発の両方において優れています。 システムの複雑さを理解し、それらが互いにどのように影響するかを直感的に理解することが必要です。
Yaroslav Vorozhko(Delivery HeroのDevOps開発者):概して 、DevOpsは非常に幅広い知識に影響を与えます。
私の通常の週は次のようになります。
- 展開(ソフトウェアリリースおよびFabricおよびPythonでのソフトウェア展開の自動化);
- インシデント管理(新たな問題の処理、復旧手順の作成、監視);
- 使用中の監視ソフトウェア(Icinga、Newrelic、Munin、Splunkを使用したログ管理など)。
- 構成管理(Saltstack、Chef、Puppet、およびAnsible、アプリケーションが機能するために必要なサービスのスタック全体);
- さまざまなスクリプトの作成(bashとpython、awk、sed、grep、sort、uniq、cat、cut、echo、fmt、tr、nl、egrep、fgrep、wcを使用)
1cloudチームの実践からいくつかの例を挙げることにしました。
したがって、バックエンド開発者の技術スタックは、.NET、C#、ASP.NET MVC、Visual Studio、Team Foundation Serverです。
APIに関しては、SDK:Vcloud SDK .NET、vSphere SDK .NET、NetApp Manageability SDK C#。
インシデント管理はServiceNowを使用して実行され、Zabbixは監視に使用されます。 さまざまなスクリプト(bash)を使用するには、PowerShellが使用されます。 将来的には、Puppetを使用して構成管理に切り替える予定です。
関連タスクのスペシャリストが何をするのか見てみましょう。
これは、Microsoftシステム管理者の毎日のタスクのリストのようです。
- ユーザーインシデントの解決策。
- ユーザーリクエストの履行。
- 現在のプロジェクトで作業する(Windows Serverベースのサーバーをセットアップして、クライアントにサービスを提供する:ターミナルサービス、MS SQLなど)。
- 変更計画(サーバーで作業する前に計画を立てる-ServiceNow);
- ソフトウェアを扱う際の問題に関するベンダーとのコミュニケーション。
- 進行中の作業を自動化するスクリプトの作成(PowerShell)。
- 監視システム(SCOM)からのイベントの分析。
情報セキュリティ管理者の基本的な義務:
- Trend Micro Deep Security、PaloAlto 2050、WAF ModSecurityのセキュリティ情報およびイベント管理システム(SIEM)AV USMの情報セキュリティ監視。
- 情報セキュリティ脆弱性管理、内部および外部スキャン(AV USMおよびQualysに基づくOpenVAS);
- TZKIのFSTECおよび「暗号化のための」連邦保安局からのライセンスの取得(施設およびワークステーションの認証、文書の収集と準備)。
- 情報セキュリティの問題に関する従業員向けのトレーニングの実施。
- インシデント管理(新たな問題の処理、復旧手順の作成、監視)。
PSHabréでのクラウドサービスの作業に関する追加資料: