サーバー管理者、ネットワークエンジニアにプログラマー経験は必要?
■ このスレッドは過去ログ倉庫に格納されています
0001名刺ではSE、ごめんね
NGNGエスカレーション先の人は、みんな(と言っても数人だが…)プログラマー経験あります。
サーバー管理者、ネットワークエンジニアにプログラマー経験は必要なんでしょうか?
PS.
何かの間違いでベンダー資格を取ってしまい、急遽『SE』なる肩書きを頂きました。
0002ぱーらー
NGNG0003ひつじさん
NGNGケースもあります。繰り返し処理が多いときとか。
必須とは言わないけれど、知っていたら便利です。
問題は、スクリプトを書くことに夢中になって、
結局手動でコマンド叩いていた方が早く終わっていた
かも??というコトが起きがちだってことですか?
ソケットプログラミングの経験があれば、サーバーアプリの
処理の流れが体感できるので良いかもしれません。
それと./Configureしてmakeしたけど途中でコンパイル
エラーになるソースをハックして無理矢理通すとか、そういう
技が使えるようになります。
0004マンボ野郎
NGNGおすすめします。というのも、管理対象となるサーバーやネット
ワークにトラブルが発生したときに、「このシステムの開発者は
何を考えてこのような仕組みにしたのか」とか「このエラーでは
プログラム内部で何が起こっているのか」ということが「想像」
しやすくなるので、トラブルシューティングがちょっとだけ楽に
なるからです。
もちろん、「なんでこのエラー種別なのに、このエラーコードを
表示するんだ。このシステムを設計したやつの能力を疑うよ。」
ということもあるんですが、要はプログラマーの心というか習性
を知っておけば、なにかと便利なこともあるだろう、という理由
です。
あと、当たり前ではあるのですが、プログラム言語の勉強をされ
るなら、開発環境環境も実行環境もご自分で構築するようにして
ください。環境の構築もとっても勉強になりますから。
00051
NGNG勉強用にDelphiでも購入します。
(C++の方が実用的だろうけど、勉強用ならPascalと聞いたもんで…)
0006名無しさん
NGNGどうせなら、FreeBSDとかLinuxとか使ってみればどうでしょう?
C、C++、Perl他使いたい放題です。
あとDelphiはどこかの雑誌でタダで付いていたような。。。。。
0007Five
NGNGコメントがついているので、自分は直接的なメリットについて触れましょう。
Perl と C を覚えるならメリットはあると思います。
・Perl を覚えるメリット --- ちょっとした管理用ツールを作るのに便利。
# MRTG を Hack したりとか・・。
・C を覚えるメリット --- 各種 Open Source Server/tool のソースを解読・改良する。
# Kernel や Server の Hack とか、C が分かると応用の利く範囲は広大といってよいです。
・Tcl/Tk を覚えるメリット --- Scotty を使ってオリジナル SNMP 管理ツールを構築できる
でも、それ以外の言語はどうなんでしょうね。
Java とか Pascal とか。
自分は Java を勉強していますが、直接ネットワーク・システム管理上のメリットを
感じるレベルまでは行っていません。だいたいネットワーク管理なら SNMP のよい
ライブラリが Java にはないんですよね。JMX はまだチェックしていませんが。
# そういえば Java 用の Free な SNMP Parser を作ろうってプロジェクトがあったなぁ。
# Java 覚えるなら Ruby の方が手軽でよいという話も・・。
ましてや、Windows でしか動かない、ネットワーク管理系のよいモジュールが少ない
Delphi はどうなんでしょうか?
0008two
NGNGプログラマをやっております。
プログラマにサーバー・ネットワーク管理経験は必要なんでしょうか?
#プログラム屋とネットワーク屋には何か違うものがある気がする・・・
0009Five
NGNGそれをネットワークの設定変更で何とかできないか(QoS の設定で解消できる
と信じている人が意外に多い)という相談を受けることがありますが、
ほとんどの場合にはそれは無理なことが多いです。
# ミドルウェアが SELECT * していてその結果発生するトラフィックが原因で
許容しがたい遅延が起きた場合など。
そういう事態を避けるためにも、プログラマーの方でネットワークやシステムの
振る舞いについて知っていてほしいということはよくあります。
ネットワークを深く知ることで、ネットワークの性能を生かせないようなアプリを
作るという事態(意外にこれが多いんだ)を避けることはできますが、
しかし、ネットワーク管理者としての経験まで必要かというと、それは違うように
思います。もちろん、場合によりけりですが。
何のプログラミングを主として行っているかにも依存するでしょうね。
例えば、クライアント・サーバー形式のデータベースアプリケーションを
作るような場合には、
・DBA(データベース管理者)の経験はあれは非常によし。効率的な
SQL 文の書き方、アクセスパターンの最適化、メンテナンス性の高い
設計とは何かがよく分かるようになるので。
・ネットワーク、特に WAN 上のプロトコルの振る舞いを理解していると
非常によい。Oracle は WAN 上ではパフォーマンスの問題を抱えているので、
設計をミスるとレスポンスが劇的に悪くなる。でも、管理者としての資質や
経験までは不要。
・サーバー管理者の経験は有益。DBA とかぶるが、ディスク I/O の最適化の
方法や、落ちないサーバーの構築方法は、システム管理者として実際に
そういうシステムを構築した経験があるとよく分かる。また、そういう
ノンストップシステムを実現するためのアプリケーション構築技法なども
理解が早い。
といったことがいえるような気がします。
0010Five
NGNG明らかにあると思います。
ネットワーク管理者の使命というのは、レイヤー6 から下を万全にすることです。
つまり、アプリケーションから依頼されたデータを、
・適切な相手に(Routing/Session)、
・適切な手段(QoS)で、
・正確に(Error check)、
送り届けるための仕組みを構築・維持するのが主たる目的です。
この目的を実現するためにプログラミングをすることはありますが、
それはあくまで「適切なネットワークの構築・維持・運用」の範疇を
出ることはありません。
それに対して、(ネットワーク管理関係以外の)プログラマーの主たる任務は、
エンドユーザーに対してサービスを提供するためのシステム(プログラム)を
作ることにあります。このときに、ネットワークというのはある意味抽象化
されて現れます。つまり、Routing/QoS/Error Check といったネットワークが
実現する振る舞いを直接意識することなく、「ネットワークサービス」
(例えば TCP/IP Socket)へパケットの送信を依頼すればそれでプログラムの
任務は終了という風に表れるということです。
このようにネットワーク管理者とアプリケーションプログラマーの任務は
質的に違うので、求められる資質も自ずから異なってくると思います。
従ってこの両者を兼任するのは実はかなり大変な仕事であることを理解する
必要があると思います。
なお、ネットワークプログラミング(IPv6 の開発や、新しい Routing Protocol/
Daemon の開発など)はどちらかというとアプリケーションプログラマーの
範疇に入ると思います。実際、Routing Daemon のコードを書いている人が
適切なネットワークを設計・構築・維持・管理できるかというと、必ずしも
そうではないことが経験から証明されています。
# もちろん、そういう人はネットワークプロトコルの詳細について熟知している
ので、適切な教育さえ施せば直ちに優秀なネットワーク管理者になります。
しかし、別途「教育」が必要な以上、やはりプログラミングを遂行するのに
必要なスキルと、管理を遂行するのに必要なスキルは異なるものというべきだと
思います。
0011two
NGNGやっぱりお互い相手のことがわからないと(わかっても?)対立しがちになりますし...
■ このスレッドは過去ログ倉庫に格納されています