サーバーについて
「データベース」について説明をする前に、まず「サーバー」と「クライアント」について説明をします。
サーバー = サービスを提供するコンピュータ
クライアント = サービスを受ける側
私たち(クライアント)は、インターネットを介し、サーバーから様々なサービス(例えばWebページ閲覧、メール、SNS、ネットショッピングなど)を利用することができます。
サーバーは、提供するサービスにより、様々な名称で呼ばれます。
例えば、以下のような種類があります。
Webサーバー = Webページの情報を提供
メールサーバー = メールを送受信する機能を提供
そして、データベースの機能を提供するのは、そう、「データベースサーバー」です。
データベースとは
企業は、顧客情報や製品情報など、膨大な量の「データ」を扱っています。
「データベース」とは、そのデータを効率よく管理するための機能です。
データベースの管理・運用にはデータベース管理システム(DBMS)というソフトウェアが使用され、「Oracle Database」はこのDBMSの製品の一つとなります。
Webを使用したシステムでは、必ずと言ってよいほどデータベースが使われています。
データベースを使用することで、以下のような利点があります。
◆ 大量のデータから、必要なデータを取り出す!
例えば、1,000万人の顧客データの中から、「あなた」の情報を確認するとします。人が目で見て調べるには膨大な時間が必要となりますが、データベースでは「索引」と呼ばれる機能により、高速に見つけ出すことができます。
◆ 並列的な処理を行う!
Webシステムでは、多くのユーザーが同時にアクセスを行い、サービスが利用できる必要があります。複数のユーザーが同時に同じデータを更新しようとした場合、データの整合性が取れなくなる事態になりかねません。
そのため、データベースには「排他制御」という機能があります。
あるユーザーが更新中の場合、別のユーザーがそのデータを更新できないように制御することで、整合性を保つことができます。
◆ 障害からデータを保護する!
災害によるサーバーの損傷や、アプリケーションのバグによるデータの損失など、不測のトラブル時にはデータを復旧する必要があります。
データベースでは、バックアップや複製などを適切に行うことで、障害発生時にデータを復旧することが可能となります。
データベースエンジニアとは
さて、前置きが長くなりましたが、ここからはデータベースエンジニアとしての責任とやりがいをお伝えしていきたいと思います。
◆ データベースはシステムの心臓である!
前述の通り、データベースとは企業が保有する膨大なデータを管理するシステムであり、サーバー上で動作するソフトウェアとなります。
データベースで管理するデータは、企業内の様々なシステムで参照されるため、「システムの心臓」であると考えます。
データベースが停止してしまったとしたらどうなるでしょうか。
例えば、銀行で預金を引き出そうとした時、口座番号や預金額のデータはデータベースが管理しているため、引き出すことができなくなります。
デイトレードを行う証券会社のシステムである場合、データベース停止により取引ができなくなったことによる損失は計りしれません。
24時間365日利用できるサービスである場合、「データベースは停止しない」事が必須です。
このようなデータベースシステムを「設計・構築・保守・運用」していくエンジニアが、データベースエンジニアであり、非常に責任感が求められる仕事を行います。
データベースエンジニアに必要なスキル
データベースエンジニアに必要なスキルについてお伝えします。
専門的な内容を含むため、難しい内容に感じるかもしれませんが、要は「ジェネラリスト」としてのマルチな知識が必要となります。
◆ データベースについての製品知識
言うまでもなく、データベースエンジニアになるためには、DBMSの製品知識が必要となります。
Oracle Databaseでは「Oracle Master」という認定資格の取得を目標に、勉強と実務を通して製品知識を身に付けます。
◆ サーバーについての知識
データベースはサーバー上で動作するソフトウェアです。
そのため、サーバーについての知識も必要になります。
具体的には、以下のようなものがあげられます。
・サーバーのハードウェアについての知識
・オペレーティングシステム(OS)についての知識
・セキュリティについての知識
◆ 冗長化構成についての知識
冗長化とは、障害が発生した時のための備えで、同じ機能や役割のある予備を用意しておくことです。障害時でもサービス提供が停止しないように、自動的に予備に切り替えるような構成が求められます。
・クラスタ構成や製品についての知識
・ネットワーク冗長化についての知識
・ストレージ構成についての知識
※クラスタとは、サーバーを冗長化するための機能です。
※ストレージとは、データを格納するディスク装置です。
◆ ネットワークについての知識
システムがデータベースと通信できるようにするためには、適切なネットワークを構成する必要があります。データベースは様々なシステムと通信を行う必要があるため、ネットワークについての知識も必要です。
◆ 運用ジョブについての知識
バックアップや不要データの削除など、日々定型的に行う運用業務は、サーバーにスケジュール設定し、自動的に実行できるようにします。
運用操作を自動的に実行するためにはプログラムを作成する必要があります。
また、プログラムを指定時刻に自動実行させるためには、専用の製品を導入することが一般的です。
・プログラミングの知識
・スケジューリング機能や製品の知識
◆ 運用監視についての知識
データベースシステム稼動後は、障害や異常が発生していないか「監視」を行う必要があります。
監視を行うにも、専用の製品を導入することが一般的です。
・監視設計の知識
・監視製品の知識
◆ バックアップ・リストアについての知識
バックアップ = データを退避することです
リストア = 退避したデータから復旧することです
データベースのバックアップ・リストアの設計はかなり複雑です。
また、絶対に損失や不整合を発生させることはできません。
通常、バックアップを取得するためにはサーバーを停止する必要があります。
停止して取得したバックアップは、単純にリストアしてサーバーを起動するだけで復旧ができるからです。ただし、24時間365日稼働し続ける事が求められるデータベースシステムでは、システムを停止しない状態でバックアップが取得できるように、細かな設計を行う必要があります。
◆ ヒューマンスキル
システムエンジニアと聞くと、パソコンを前に黙々と仕事を行っているイメージがあるかもしれませんが、システム発注者であるお客様との打合せや、チーム内でのコミュニケーションなど、意外と人と関わることが多いです。
特にデータベースエンジニアは様々なシステムと連携するため、チーム外のメンバーとの打合せ機会も多いです。
また、データベースを利用するためのアプリケーション開発者とのコミュニケーションも必要となります。
データベースエンジニアを養成するための弊社の取り組み
データベースは、ほぼ全てのシステムに存在するにも関わらず設計には高度の知識が必要となるため、慢性的にデータベースエンジニアが不足していると言われています。
その分、データベースエンジニアは重宝されますし、個々のエンジニアの単価も高いと感じております。
データベースエンジニアを育成するための弊社の取り組みについて、以下に記載いたします。
◆ 未経験から一人前のデータベースエンジニアに育てるためのノウハウあり!
システムエンジニアは技術職であり、専門的なコンピュータの知識が必要ですが、未経験でも業界に参入し、スキルを身に付けていくことができるのが利点です。
実際に代表者が未経験からデータベースエンジニアとなり、自身の経験を生かし、データベースエンジニアになるためのカリキュラムを作成しました。
弊社の具体的な取り組みを一部ご紹介します。
・未経験者は、まずはOSの知識から!
「LinuC レベル1」というLinux OSの資格取得を支援します。
まず、外部の専門の研修スクールに通って頂き、Linuxサーバーの構築とネットワークの基礎について、実機を使用した形でしっかり学んで頂きます。
スクール終了後、自社にてLinuC取得のための勉強を行い、入社2ヶ月での取得を目指します。
未経験から業界に入ったエンジニアで、OSについての知識が無いままに、いきなり案件参画する話をよく聞きます。
先輩社員に教えてもらったり、自分で調べたりして対応しているようですが、このOSの知識をしっかり学んでいるかどうかで、今後のエンジニアとしての成長スピードに圧倒的に差がつくと考えております。
【LinuCとは】
Linux OSの認定試験を実施しているNPO法人LPI−Japanが作った資格試験であり、
LinuC レベル1は、「Linuxシステムの構築・運用・管理の専門家」であることを認定します。
★スキルシートにも記載できる、あなたの最初の技術資格です
OSと聞くと、真っ先に思い浮かぶのは「Windows」だと思います。
Windowsは人間が使いやすいよう、グラフィカルな操作を基本としたOSですが、それに対し「Linux」はコマンドラインを基本に操作していくOSとなります。
(真っ黒な画面にコマンドをバシバシ打ち込む形です)
Linuxは、Windowsよりも高速に動作するため、企業のシステムではかなり採用されているOSとなります。Oracle専用マシンである「Exadata」も、Linuxを採用しています。
Linuxはコマンドでの設定となり、基本を身につけていないと全く対応することができないため、未経験者には始めにLinuxの知識を取得してもらう事にしています。
LPI−Japan URL:https://linuc.org/linuc/levels.html
・サーバー構築についての基礎を伝授します!
例えば、構築現場には共通して使用されるツールや作業のための作法が存在します。もちろん書籍で得ることはできない知識のため、弊社オリジナルとなります。案件に参画してから慌てないよう、事前に伝授します。
また、社内研修用のカリキュラムを用意していますので、実際にOracle Databaseをインストールしてもらい、構築の流れとデータベースへの理解を深めてもらいます。
・データベース初心者のための勉強会を開催しています!
Oracle Database製品の知識を得るため、
まずは「Oracle Master Bronze」の取得を目指します。
人気の資格であるため、本屋に行けば様々な書籍があることに気が付くと思います。
ただし、書籍を見てみてください。
全体で500ページほどあります。
会社から「資格を取るように」と言われても、当のエンジニアは非常に苦労すると思います。
弊社では個別レッスンのための勉強会を開催し、実機実演と書籍の読み合わせにより、エンジニアの資格勉強をフォローします。
講師は、Oracle Master Platinum資格所有者である代表が行います。"Bronze"取得の後は、"Silver"、"Gold"と目指していきますが、もちろん全てフォローすることが可能です。
★研修期間中にSilverまで取得した社員もいます!
上記は過去の勉強会の様子です。
今はテレワークの現場も増えたため、Webミーティング形式で勉強会開催しています。
・書籍購入代金補助!
・資格取得費用は、たとえ落ちたとしても補助します!
専門の技術書は個人で購入するには高価だと思いますが、技術職であるシステムエンジニアは、知識を得るために書籍を読む必要があります。
弊社では、専門の技術書の購入費用はすべて補助いたします。
また、資格取得にかかる費用も補助いたします。
資格取得時には補助を出している企業は多いと思いますが、落ちた時も補助している企業は少ないように思います。
Oracle Masterは受験料が数万円します。
積極的にチャレンジしてもらいたいため、たとえ落ちてしまった場合にも補助いたします。
・設計/構築案件に対応できるよう支援します!
未経験というと、まずは運用を行う案件に入り、知識を身に付けてから保守、構築とステップアップしていくことが一般的かと思います。
弊社の技術者はみな、設計/構築をメインに案件参画しているため、OJTにより設計/構築案件に携わることが可能です。
ただし、知識のないまま案件参画するとできる作業が何もない、といった事態になりかねません。
前述の取り組みにより、案件参画した後に作業対応ができるよう、事前に支援いたします。