エンジニアBLOG

2023/05/02

DNSの設計開発の現場について

DNS(Domain Name System)

エンジニアブログをご覧のみなさま、初めまして中途入社して、
7年目のカマタと申します。

前職でもエンジニアとして働いており、WEBアプリケーション開発等が主な業務でした。

エボルバに入社して最初に配属された現場は、DNS(Domain Name System)を設計開発、
保守運営する部署でした。

DNS自体はサーバ上に構築されるソフトウェアのため、通常のシステム開発的な側面がある一方で、
インターネット上で ドメイン名 を管理・運用するというシステムの特性上、
ネットワークの側面もあり、幅広な知識を必要とします。

こういった両方の技術が広く求められる部署はあまり多くはないかもしれませんが、
不足していたネットワークの技術を習得するのにいい機会となりました。

image

<実施していた業務>

≪各工程について≫
・見積り:システムを開発するにあたり、かかる費用を決めます。開発ベンダーから提示された
見積り内容を精査して、工数、作業内容等に問題がないかを確認し、指摘・修正等を行い、
適正な価格、内容に詰めていきます。

ここでなかなか開発ベンダーと折り合いがつかず、長引くこともよくあります。
この上流の工程に関わらせて頂けたのは貴重な経験でした。

・要件定義:システムに求める要件を決める工程で、現場の社員、開発ベンダーと
すり合わせを行いながら決めていきます。システムの根幹を定める工程なので、ここは要件の漏れや、
誤りを出さないことが重要です。特に後から要件を追加するとなると、金銭面でトラブルの元となります。

image

・設計工程:基本的には開発ベンダーが作成してきたシステム設計書をレビューし、
問題ないかを行いながら確定していきます。

・開発工程:私が配属された部署では開発工程はシステム開発ベンダーへ発注していたため、 
直接開発をするという機会はほとんどありませんでした。
またDNSはほぼ規制のソフトウェアを使用するので、開発工程で実施するのは
各パラメータ値を設定していく作業になります。そのため実施することはほとんど設計工程で固まっており、
その内容通りにパラメータ値を設定していく作業になります。

image

・テスト工程:開発ベンダーが主に担当しますが、テストに用いるテスト項目書、
テスト結果の証跡を確認し、問題なくテストを実施しているかを確認していきます。
ここでちゃんと確認をしないとしっかりテストをしていない可能性もあるので、
確認をする必要があります。テストケースが数百件にのぼることもあり、
実施する方も確認する方も大変です。

・受け入れ工程:開発ベンダーの納品したシステムに対して、こちらの要求、設計どおりに
システムが開発されていることを検証するために、システムテストを行います。
ここがテストの最終工程となるので、開発ベンダーの抜け漏れや、要件定義通りにシステムが動くかを
しっかり確認する必要があります。ここで検出できないとシステムにバグが残ることになり、
システム障害の要因ともなります。

・移行計画・移行準備:受入れ工程で問題がなければ、本番環境にシステムをリリースします。
どの日程で、どのような作業工程でリリースを進めていくか、計画を行い、移行手順書を作成し、
リリースの作業を一通り試験環境でテストします。問題があれば移行手順書を修正して、
また再トライを行います。この工程でほぼシステムリリースの成否が決まります。

・システムリリース:DNSは基本稼働し続けなければいけないシステムのため、
システムのリリースは基本的に影響の少ない夜間帯に作業をします。
作業前に、夕飯をみんなで食べに行くのが楽しかったです。この作業で失敗すると、
事後処理と案件のリカバリが大変なことになります。
(※失敗後、最低1か月は再リリースの許可がされません)

image

<どんな技術が身につくのか、身に付いたか>

・ベンダーコントロール:開発工程の管理業務に携わることで、開発ベンダーとの調整、
進捗管理、等のスキルが身に付きます。大事なのは開発ベンダー側も様々な事情、体制で行っており、
その事情を組んで調整することも大事かと思います。
一方的にこれをやって、では上手くいくものも上手くいきません。

・プロジェクトマネジメント技術:前職でプロジェクト管理についてはある程度経験があったので、
そのスキルを現場の方達が評価してくれた結果、案件の管理も任されるようになり、さらにプロジェクトを
管理する能力が鍛えられました。

・DNSの知識:あまりDNSについて深い知識はなかったのですが、この現場に配属となり、
DNSの種類や、細かい機能に関して知ることができました。

・L2、L3スイッチの知識:DNSを設定する周辺のL2スイッチ、L3スイッチの管理も業務の対象であったので、
設計、運用を通して知識を深めることができました。

・サーバに関する知識:DNSはLinuxサーバ上に構築されていたため、Linuxサーバ自体も携わることになり、
サーバ周りの操作や、設定値等の知識を得る機会がありました。

・物理作業の経験(ラックへのサーバ等の積み込み、配線、電源投入等):
システムリリース、システム更改等の作業を通して、上記物理作業も実施する機会があり、
なかなか物理作業はやる機会がなかったので、貴重な経験ができました。
ものすごく重いL3スイッチを4人で抱えて持ち出すなんてこともありました。

〈最後に〉

業務として多岐にわたり、色々と関わることができた現場でした。
また、携わる範囲を広げて行けたので、皆さんも興味のある分野があれば積極的に関わっていくのも
面白いのではないかと思います。

image