富士通インターン面接対策
🌟テーマ
オープンソース活用による5Gコアシステム・シミュレータの開発及び評価
オープンソースとは、ソフトウェアのソースコード(プログラミング言語で記述された文字列)を無償で公開し、誰でも自由に改良・再配布ができるようにしたソフトウェアのことです。. 対して、一般的なソフトウェアは利用料が必要。
🌟テーマ概要
5Gコアシステム・シミュレータ開発においては、Service-Based Architectureに基づき、REST-Fullなインタワーク、コンテナアーキクチャによる実装を進めています。これらを実現するために、有用なオープンソースを活用したインテグレーションや効率的に開発を進めるためにCICDプロセスを導入しています。これら技術を実用した開発(システム構築等)や評価、及びプロセスの内容を体験して頂きます。
・Service-Based Architecture:大規模なコンピュータ・システムを構築する際の概念あるいは手法の一つ。業務上の一処理に相当するソフトウェアの機能をサービスと見立て、そのサービスをネットワーク上で連携させてシステムの全体を構築していくことを指す言葉である。業務処理の変化をシステムの変更に素早く反映させたいという需要に応えうるもの
富士通GLOVIA iZは「経営」「会計」「人事給与」「就業」「販売」「貿易」「生産」の7つの基幹業務と現場業務をつなぐフロント基盤を統合し、クラウドやデジタル技術を融合させた次世代ERPです。
ERPとは、Enterprise Resources Planning の略であり、企業経営の基本となる資源要素(ヒト・モノ・カネ・情報)を適切に分配し有効活用する計画=考え方を意味します。現在では、「基幹系情報システム」を指すことが多い。
基幹系システムとは、企業や官公庁などの情報システムのうち、事業や業務の中核に直接関わる重要なシステムのこと。または、全社で共通して利用される、その組織全体の基盤の一部となるシステム。
・RESTとは分散型システムにおける複数のソフトウェアを連携させるのに適した設計原則の集合、考え方のこと
・アーキテクチャとはITの分野では、コンピュータやソフトウェア、システム、あるいはそれらの構成要素などにおける、基本設計や共通仕様、設計思想などを指すことが多い。
・インテグレーションとはITの分野では、コンピュータやソフトウェア、ネットワークなどを組み合わせて一体化し、目的を達成するための情報システムを構築することをいう
・CICDプロセス
「CI」とは「Continuous Integration(継続的インテグレーション)」の略で、ソフトウェア開発におけるビルドやテストを自動化し、継続的に行うアプローチのことです。
「CD」とは「Continuous Delivery(継続的デリバリー)」の略で、CIによってテストされたコードのマージや、本番環境向けのビルドの作成を自動的に行い、本番環境にデプロイが可能な状態を整えるプロセスのことです。
また「CD」は「Continuous Deployment(継続的デプロイ)」の略として使われることもあります。継続的デプロイは継続的デリバリーとよく似た概念ですが、継続的デリバリーがデプロイ可能な状態を準備するだけなのに対し、継続的デプロイは実際に本番環境へのデプロイまでを行う点が異なります。
このようなビルド、テスト、デプロイを自動化し、継続的に行う手法のことを、あわせて「CI/CD」と呼びます。
継続的デリバリー(CD)は、継続的インテグレーション(CI)を拡張した手法で、ビルドやテストだけでなく、リリースプロセス全体を自動化します。実施の目的はDevOpsと同様で、リリーススピードを上げることで、素早く市場からフィードバックを得られ、ソフトウェアに反映させることができる。
継続的デリバリー(CD)が行えるようになった背景には、クラウドやコンテナといった技術の普及や、インフラ環境をコードで管理できるようになった点があります。そのため、コミットからリリースまで全ての作業が自動で行うことができます。
🌟求めるマインド
やってみたいコト、世の中を変えるインパクトがあるコト、誰にも思いつかないコト、戦略的なアイディアを具体的なビジネスモデルとして企画・立案し、様々な技術を駆使してユーザ視点で1つのことに組み上げ、自ら手を動かし、失敗を恐れずに実現に向けた課題検討や開発をやり遂げる
🌟必須スキル
・クラウド・コンテナ・マイクロサービスなどのサービス基盤の基本的な知識
・5G/IoT等の基本的な知識
・クラウドとはユーザーがインフラ※やソフトウェアを持たなくても、インターネットを通じて、サービスを必要な時に必要な分だけ利用する考え方。
- SaaS(Software as a Service) ソフトウェアを提供するクラウドサービス(googleマップ、Yaooメール)
- PaaS(Platform as a Service) 開発環境を提供するクラウドサービス
- IaaS (Infrastructure as a Service) サーバー(インフラ)を提供するクラウドサービス
・コンテナとはITの分野では何らかの入れ物のような働きをする要素や仕組みなどを比喩的にコンテナと呼ぶことが多い。
コンテナ型仮想化
コンピュータの仮想化の方式の一つで、稼働中のオペレーティングシステム(OS)の一部を分離して他と隔離された専用のエリアを用意し、その上でソフトウェアを動作させる方式をコンテナ型仮想化という。隔離された領域のことをコンテナという。
仮想マシンの構築は行わず、元のOS環境上に隔離されたエリアを作り、仮想的に新たなOS実行環境を作り出す。その内部で動作するソフトウェアはコンテナ外へ影響を及ぼすことはなく、またコンテナ外から干渉されることもない。
コンテナはソフトウェアからの操作により作成、編集、起動、破棄などを行うことができるため、人間がコンピュータにOSを導入・設定して起動するのに比べ、簡単、迅速に特定の環境を構築したり別の環境に切り替えたりすることができる。
作成したコンテナは丸ごとファイルに保存して他のコンピュータ上に移して起動することもできるため、ソフトウェアの配布パッケージとして設定済みのコンテナをファイルとして提供する場合もある。利用者はこれを入手してOS上で展開するだけで設定など何もしなくてもいきなりソフトウェアを起動することができる。
データ構造のコンテナ
プログラミングの分野で、データやオブジェクトなどをまとめて格納するためのデータ構造やクラスなどの総称をコンテナということがある。この意味でのコンテナには配列やリスト、スタック、キューなどが含まれる。
コンテナフォーマット
音声や動画のデータ圧縮の分野で、データの格納方式のみを定めたファイルフォーマットをコンテナ(あるいはコンテナフォーマット)という。圧縮形式は複数の中から選択でき、記録・再生のためにはその形式に対応したコーデックを用意する必要がある。
コンテナ型データセンター
貨物コンテナにデータセンターとして必要な電源、空調、通信、什器などの機材(場合によってはコンピュータ自体も)をコンパクトに収納し、必要な場所に運搬して利用する形態をコンテナ型データセンター(data center container)という。
・マイクロサービスとはソフトウェア開発の技法の1つであり、1つのアプリケーションを、ビジネス機能に沿った複数の小さいサービスの疎に結合された集合体として構成するサービス指向アーキテクチャ(service-oriented architecture; SOA)の1種である。
マイクロサービスベースのアーキテクチャでは、継続的デリバリーと継続的デプロイが可能になる。
マイクロサービスは、小さな独立した複数のサービスでソフトウェアを構成する、ソフトウェア開発に対するアーキテクチャ的、組織的アプローチです。各サービスは、正確に定義された API を通じてやり取りします。これらのサービスは、小規模の自己完結型のチームが所有します。マイクロサービスアーキテクチャはアプリケーションのスケーリングを容易にし、開発期間を短縮するため、イノベーションの実現と新機能の市場投入の加速につながります。
マイクロサービスアーキテクチャでは、アプリケーションは独立した複数のコンポーネントとして構築されます。各コンポーネントは、1 つのサービスとして個別にアプリケーションプロセスを実行します。これらのサービスは、軽量の API を使用した、正確に定義されたインターフェイスを通じてやり取りします。サービスはビジネス機能向けに構築され、各サービスが単一の機能を実行します。サービスが独立して実行されるため、各サービスを更新、デプロイ、スケールして、アプリケーションの特定の機能に関する要求に応えることができます。
マイクロサービス向けの充実したプラットフォーム
AWS は、規模、負荷、または複雑さにかかわらず、あらゆるアプリケーションアーキテクチャをサポートする構成要素を統合させました。
🌟あれば望ましいスキル