IT・ソフトウェア開発チームとその機能

今日、技術主導の環境が広く受け入れられるようになり、企業組織では新しい技術職、新しいチーム構造、新しい階層がますます増えてきています。また、デジタルトランスフォーメーションの加速に伴い、企業のワークフォース戦略も見直されています。

技術系ITグループの役割分担や構成は企業組織によって異なるが、ソフトウェアチームをはじめとする各種ITチームが担う職務・業務は同じです。今回は、IT運用&ソフトウェア開発チームの種類を検証し、その機能と違いを理解しましょう。

IT運用&ソフトウェア開発チームの種類

ITチームには、開発側と運用側のどちらか(あるいは両方)を担当するチームがかなり多く存在します。事業内容や企業規模によっては、必ずしも以下に挙げるようなチームをすべて持つ必要がない組織もあります。肩書き、機能、構造は企業によって異なるかもしれませんが、行われている仕事は同じです。  

ソフトウェア開発チームとIT運用チームの連携

10年以上前、ソフトウェア開発チームとIT運用チームは別々に活動し、リーダーも責任も目標も異なっていました。これらのチームは同じ領域で仕事をすることさえなく、他方との交流はほとんどありませんでした。そのため、他者と情報を共有することに消極的で、これらのチーム間でコミュニケーションや協力が行われることはありませんでした。

技術の進歩に伴い、DevOpsという組織文化の大きな変化が起こり、「サイロ」の考え方を取り除くことに成功し、その結果、開発チームと運用チームの間のギャップが解消されました。

  • コラボレーション
  • 一般的な業務を共有する
  • ソフトウェアライフサイクルを通じて、提供するソフトウェアの完全なオーナーシップを持つ
  • 今日、DevOpsは、アマゾン、グーグル、ネットフリックス、BMCなどの大手テクノロジー企業を含むIT業界で一般的に使用されています。現在では、企業はDevOpsの原則をITにとどまらず、組織全体に普及させようとしています。

エンジニア、開発者、運用の専門家など、何人もDevOpsチームに参加させることが可能です。ほとんどの場合、特定のスキルセットを求めるのではなく、DevOpsチームのメンバーそれぞれに独自のスキルを持たせるべきです。DevOpsチームのあるメンバーはフロントエンドに注力し、同じくDevOpsチームに所属する他の誰かにバックエンドを担当させることが出来ます。

ソフトウェア開発チーム

開発チームの主な仕事は、製品の機能やコンポーネントを構築したり、アイデア出しから納品までのプロジェクト全体に取り組んだりすることです。

開発チームを置く理由は、ビジネス組織がテクノロジーを使って特定のビジネス上の問題を解決し、効果的なソリューションを提供する必要があるからでしょう。ソフトウェア開発チームは通常、アジャイル手法だけでなくDevOpsのような継続的かつ反復的な開発プロセスに従います。

開発チームは多くの場合、臨時で編成されます。つまり、さまざまな製品機能を開発し、将来のリリースを提供するために、機能横断的な専門家からなる新しいチームを組み立てることができるのです。ほとんどの企業組織は個々のチームの規模を制限していますが、ソフトウェア開発者は異なるチームや他の部門とうまく協力する傾向があります。

品質保証(QA)チーム

多くの企業がQAチームの構築を選択する理由は、エンドユーザーに提供されるソフトウェアの品質を保証するためです。品質保証における「品質」という言葉は、パフォーマンス、セキュリティ、リスク、コスト、コンプライアンスなど、ソフトウェアアプリケーションの様々な特性に関連している場合があります。

QA/ソフトウェアテストチームは、主に機能リリースのテストに取り組み、バグをキャッチし、既知および未知のエラーを特定し、品質上の問題を検出する必要があります。

現在の進歩するテクノロジーの世界では、DevOpsのような最新のプラクティスが採用され、QAと開発の役割の境界線は大きく重なり合っています。この両チームは独自のスキルと専門性を持って独立して作業していますが、不要なエラーや最適でない製品リリースのリスクを減らすために、SDLCライフサイクルの初期段階でできる限り協力することが望まれるようになってきています。

IT運用チーム

IT運用チームは、Ops、ITOps、I&O(Infrastructure and Operationsの略)など、別の名称で呼ばれることもあります。ITOpsの複雑さと重要性は組織規模に比例して増し、Opsチームとの早期連携がDevOps導入成功のカギとなります。

今日、クラウドサービスやインフラの自動化、ソリューションが主流となり、普及が進んでいるにもかかわらず、IT運用の重要性は依然として高いままです。

IT運用チームは主に、ITインフラストラクチャを最適に稼働させることに注力する一方、ソフトウェア開発チームが迅速にスプリントし、機能リリースサイクルを保証するために必要なサービスを提供します。

さらに、運用チームが注力すべき他の業務として、組織のポリシーとITSMの原則がソフトウェア開発チームと他の部門に厳密に順守されていることを確認することが挙げられます。特に、インフラストラクチャの管理、監視、および保守活動を担当する運用チームの役割には、時間が経過しても変わらないものがあります。

ITヘルプデスク/サポートチーム

ITサポートチームは通常、社内の従業員や外部のクライアントなど、ビジネスユーザーが直面する技術的な問題を解決する手助けをします。ITサポートチームは、業務範囲や機能によって分けることが出来ます。具体的には、内部使用のためのサービスデスク(またはヘルプデスク)、顧客サービスヘルプ外部ユーザー、および技術的な問題を解決するためにユーザーを支援する技術サポートの操作です。

また、サポートチームは、ITインフラに関する問題を解決するだけでなく、技術的なインシデントの影響を緩和するためにIT opsチームと連携することもあります。今日、AIやオートメーションのような新しいソリューションにより、ITサポートのさまざまな側面を自動化し、効果的に人間の関与を減らすことが出来ます。しかし、このような自動化の取り組みは、標準化され、顧客中心であり、急速に進化し続ける企業の技術およびビジネス要件に対応するように開発される必要があります。

そのため、サポートチームは異なる部門から構成され、これらの基準を満たすために開発および運用チームと密接に連携することが出来ます。

セキュリティチーム

この急成長するデジタル世界において、サイバーセキュリティは、事業規模や業種を問わず、すべての企業組織にとって最大の懸念事項の一つです。サイバーセキュリティの専門家で構成されるグループが、自社のITセキュリティ活動を担っていることがよくあります。迅速な開発スプリントとリリースの繰り返しを支援するためにインフラとサービスが自動化されたDevOps環境では、ITセキュリティ・チームの共通の領域は、アイデンティティとアクセス管理だけでなく、変更承認プロセスも含まれます。

セキュリティチームは、ポリシーやサイバーセキュリティプロトコルを定義するビジネスリーダーや、ITサービス管理活動が組織の確立されたセキュリティポリシーに従って順守されるようにするオペレーションチームなど、さまざまなパートナーと協力します。

サイバーセキュリティチームは、時には開発チームを支援し、アプリケーション開発プロセスにおいて予期せぬセキュリティエラーを特定し、セキュリティの抜け穴を軽減することもあります。

SREチーム

SREという用語は、サイトの信頼性エンジニアリングを意味し、このチームはGoogleによって普及しました。その結果、ハイブリッドクラウド環境に格納されているアプリケーションを効果的に管理するために、DevOpsの実践と自動化が不可欠な要素となったため、世界的に大きな注目を集めるようになりました。

ITOpsチームが行っていた作業を伝統的に行うため、SREチームにはソフトウェア開発のバックグラウンドを持つエンジニアが必要とされています。SREのエンジニアは、これまで手作業で行っていた作業を自動化することに専念することがほとんどです。 

オフショア・ソフトウェア・アウトソーシング・チーム(Offshore Software Outsourcing Teams)

このような外部チームは、遠隔地から組織と密接に連携するために結成され、通常は一時的に使用されます。オフショアアウトソーシングチームと組織のコラボレーションは、通常アウトソーシング契約に基づいて行われ、アウトソーシングチームは通常、製品開発またはテストを担当します。オフショアチームは、ソフトウェア開発支援、QA、ソフトウェアテスト、サイバーセキュリティなど、現場にいなくてもできる仕事を提供します。

組織は、ソフトウェア開発プロセスの改善とスピードアップのために、必要に応じてこれらのオフショアアウトソーシングチームにそのスキルギャップを埋めてもらうことができます(例:AIと機械学習、DevOpsなど)。大企業では、地理的に異なる場所にある多数のソフトウェアアウトソーシングチームが、同じようなプロジェクトで一緒に働くことが出来ます。

全体として リモートワーカーとして参加する外部ベンダーの職務は、ビジネス上の機密情報やミッションクリティカルなタスクのやりとりを伴うものであってはなりません。

コラボレーションとチームワークの重要性

従来、IT開発チームの主な役割は、組織のIT技術インフラを運用・維持することでした。特定の技術的なスキルを持つプロフェッショナルが、それぞれの主な業務範囲において別々に仕事をしていました。その結果、このような職場では、多くのITチームやソフトウェア開発チームがサイロ化して働き、目標に一貫性がないため、意見が対立したり

例えば開発チームの主な目標は、競合他社に対してより競争優位に立つためにエキサイティングな新機能を提供することですが、QAチームにとっては、専用のテスト作業を通じて、これらの機能リリースがエラーフリーで意図通りに動作し、優れたセキュリティと高度なパフォーマンスを持っていることを確認することが焦点となっています。

今日のビジネス環境、特にIT業務においては、様々なタイプのITチームにおけるメンバーの役割、スキル、機能に対する制約が少なくなっています。組織構造は変わらないものの、多くの先進的なハイテク新興企業は、フラットな階層構造を採用し、クロスファンクショナルチームや多様な機能的専門性を持つチームを構築し始めています。

最終的には、チーム間、部門間、異なる職種の間のサイロや障壁が徐々に排除されつつあるのです。チームは、多様な技術的・IT的背景と能力を持つメンバーで構成され、生産チェーンの複数の部分を統合することが出来ます。ソフトウェア開発ライフサイクル(SDLC)の過程で変化する可能性のある重複する機能的責任は、開発者、運用者、QAチームの間で共有することが出来ます。