Skip to content

Instantly share code, notes, and snippets.

@misty320
Last active July 6, 2016 16:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save misty320/b05d9817438bd335821437fcfe20fdbf to your computer and use it in GitHub Desktop.
Save misty320/b05d9817438bd335821437fcfe20fdbf to your computer and use it in GitHub Desktop.
Web系についてゆるくまとめる

まずWeb系で技術寄りな職分についてざっくりと述べます。

インフラエンジニア

主にサーバの物理的な管理~OS/ミドルウェアの管理を行う。

厳密な定義はないが、専門性の高い以下の分野は明確に職種として分けられる場合もある。

  • ネットワークエンジニア
    • 物理サーバと配線、ネットワーク設定、通信帯域監視などを専門に行う。
  • データベースアドミニストレータ(DBA)
    • データベースサーバとDBMSの管理を専門に行う。

【keyword】

  • 物理サーバー/配線/データセンター
  • Linux
  • Bash
  • ウェブサーバー
  • DBMS
  • HTTP/TCP/IP
  • サーバー設定ツール
  • モニタリングツール

サーバサイドエンジニア

Webアプリケーションエンジニア.

Webサーバー上で稼働させるプログラムの開発・管理を行う。

【keyword】

  • Bash
  • プログラミング言語
    • Php,Perl,Python,Ruby,Java,C++,Golang,Scala
    • Javascript
  • HTTPDB
  • WAF(WebApplicationFramework)
  • API(ApplicationProgrammingInterface)
  • バージョン管理ツール
  • モニタリングツール

クライアントサイドエンジニア

アプリエンジニア.

端末側で動作するプログラムの開発を行う。

【keyword】

  • プログラミング言語
    • Java,Objective-C,Swift
    • Javascript
  • Android/iOS
  • バージョン管理ツール

データサイエンティスト

分析エンジニア.

蓄積されたデータの分析、分析環境の構築を行う。

【keyword】

  • プログラミング言語
    • Python,R,Java
  • 分散処理
  • DBMS
  • バージョン管理ツール
  • ログ解析
  • データウェアハウス

先述したKeywordについて少し細かく説明します。

物理サーバー/配線/データセンター

サーバ、関連機器の購入や設置を行う上での知識.あまりわからん.

  • CPU/Memoryの性能
  • ディスクの特性
  • 配線知識

昨今ではクラウド環境の構築知識もインフラ管轄.

  • GoogleCloudPlatform
  • AmazonWebServie

Linux

一般的なサーバーのOSであるLinuxの操作一通りの知識.

後述するBashの知識とはほぼセットで理解する必要がある.

  • RedHat/Debian
    • yum/rpm
    • カーネルチューニング
    • ネットワーク設定

Bash

Linuxを操作するための基本ツール. いわゆるTerminal/端末/黒い画面

ファイルの編集,環境構築,サーバー監視などを筆頭に全般的に必要な知識.

Bashコマンドの組み合わせでプログラムを書くこともできる.

  • cd,grep,find,tail,head,cat,ping,telnet,...

ウェブサーバー

インターネット越しにプログラムを利用させるためのミドルウェア.

  • Apache
    • 昔からある定番
  • nginx
    • ここ数年で爆発的に流行りはじめた

DBMS

データベース.

  • MySQL
    • 定番のフリーRDB.業務環境でも圧倒的に採用事例が多い
  • Oracle
    • MySQLと似ているが、ハードウェアとセットで提供される高性能で超高価なRDB
  • mongoDB
    • 数年前に流行りそうで流行らなかったNoSQL-DB
  • Redis
    • 近年採用されることが多いKey-Value型DB(KVS). DBではないがKVSの定番技術にMemcachedがある.

HTTP/TCP/IP

ネットワークプロトコル知識.概念的なものだが通り一遍の理解が望ましい.

サーバー設定ツール

OS/ミドルウェアの導入を自動化するツール.

  • Chef,Ansible,Puppet
    • 設定ファイルに基づいてミドルウェアを管理する
  • Vagrant,Docker
    • 仮想サーバーを構築・管理するツール(Chef/Ansible/Puppetは構築されたサーバー上で稼働させる)

モニタリングツール

アプリケーションやハードウェアの利用状況を監視するためのツール

  • CloudForcast,Xymon,Kibana,NewRelic
    • サーバー状態の管理画面
  • Fluentd
    • 多数あるサーバー上のログを監視サーバーに転送するツール.ここ数年で爆発的に流行り始めた
    • tail,dstat,top,ps,free,netstat,ping,..

バージョン管理ツール

プログラムなどの更新履歴を保存し、必要に応じて古い版を取り出すツール.

プログラムを開発するなら現代ではほぼ必須の知識.

  • svn(サブバージョン)
    • むかしながらのバージョン管理ツール. (svn コマンド)
  • git
    • 近年主流のバージョン管理ツール.(git コマンド)
  • GitHub
    • gitと混同されがちだが、gitをウェブ上から活用するためのサービス.

プログラミング言語

  • Php,Perl
    • 2000年代日本で流行ったサーバーサイド向きの言語.
    • 現在はこれらかの転換期だがまだまだシェアは大きい.
  • Python
    • Googleを筆頭に国外では大きなシェアを持つサーバーサイド向きの言語.
    • 数学/統計的機能が充実しており、分析分野でも主流
  • Ruby
    • 近年流行っている純日本産サーバーサイド向きの言語.日本語情報が多い
    • オブジェクト指向を最大にサポートする言語の1つで、世界的にもそれなりに流行っている.
    • 処理速度自体は他言語より低速なので、超大規模サービスや分析には利用できない.
  • Java,C++
    • 静的型の定番言語. 古く不便な部分も多いが高速.大企業の昔ながらシステムに多い.
    • 高速処理が求められる場面では新しいシステムでもまだまだ採用される.
    • Androidアプリは一応Java.
  • Golang,Scala
    • Python,Javaの後継としてここ2~3年で台頭してきた言語.
    • 最新技術に強いベンチャーや広告業界などでは採用実績も多い.
  • Javascript
    • ブラウザ内(クライアントサイド)で動作することからある意味では必須の言語.
    • サーバサイドでの採用事例もあるが…あまり主流ではない
  • Objective-C
    • iOSアプリ開発用の言語
  • Swift
    • Objective-Cの後継
    • Golang,Scalaと同世代の言語で、類似点も多いと言われる
  • R
    • 統計用機能が充実している分析用言語.

Android/iOS

スマホアプリ開発時に必要な知識.

サーバーで一般的なLinux環境とは全く異なるので...わからん.

WAF(WebApplicationFramework)

Webサーバで提供するアプリケーションの雛形的なプログラム.

HTTPリクエストの仕組みで必要になりがちな機能のライブラリ、と考えてもよいかも.

  • Cake,Synfony,Rails,Sinatra,Play,Struts,....
    • 各言語ごとにたくさんある.
    • WAFを使わないで独自に作成することも多い.

API(ApplicationProgrammingInterface)

プログラムから呼び出されるプログラムのこと.

  • スマホアプリからTwitterAPIを利用する
  • ウェブサービス内でGoogleのAPIを利用する
  • Androidアプリ内でOSのAPIを利用する

など様々な文脈で使われる言葉・考え方.

具体的なことは都度調べればよいが、概念的にゆるくは理解しておくと良い.

つかれた。

  • 分散処理
  • ログ解析
  • データウェアハウス
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment