【データベース】pgpool-IIによるDBサーバ負荷分散

2017.1.18


はじめに

pgpool-1.jpg

大量のWebアクセスがあるシステムで利用されているDBサーバの負荷分散についてご紹介したいと思います。

今回はOpenStack環境上でDBサーバ(PostgreSQL)のレプリケーション構成を構築し、それらのDBサーバに対してpgpool-IIによる負荷分散を行い、性能がどれくらい変わるのかを確認していきます。

構成

pgpool-IIはバックエンドで動作させるDBサーバを複数指定し、アプリケーションから参照クエリ (SELECT文)を受け取ると、どれか一つのDBサーバに送信し、負荷分散することが出来ます。一方、更新クエリ(INSERT、UPDATE等)はMasterのみに送信されます。
更新されたデータはPostgreSQLのStreaming Replication機能によってMasterからSlaveに同期されます。

pgpooll_kousei_2.png


pgpool-IIおよびPostgreSQLをインストールするサーバは、OpenStack上のVMにしました。
ゲストOSは、OpenStack用のCentOS-6-x86_64-GenericCloud-1608を使用しています。

なお、「【OpenStackチャレンジ】 第9回 仮想マシンが起動するコンピュートノードを指定してみよう」を参考に、各VMはDifferentHostFilterでコンピュートノードを分散してみました。この記事を執筆した小羽根くんに感謝です!

PostgreSQLレプリケーション

まずは、PostgreSQLのMasterから構築します。
wgetでPostgreSQLリポジトリをダウンロードします。
# wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm

rpmでリポジトリをインストールし、yumで必要となるパッケージをインストールしましょう。
# rpm -ivh pgdg-centos96-9.6-3.noarch.rpm
# yum install -y postgresql96-server

ここで、セキュリティ関連のiptablesおよびSELinuxを無効化しておきます。
# setenforce 0
# service iptables stop

データベースを初期化し、起動します。
# service postgresql-9.6 initdb
# service postgresql-9.6 start

[root@Master ~]# service postgresql-9.6 initdb
Initializing database: [  OK  ]
[root@Master ~]# service postgresql-9.6 start
Starting postgresql-9.6 service: [  OK  ]

レプリケーションおよび動作確認用に以下の設定項目を変更します。
# vi /var/lib/pgsql/9.6/data/postgresql.conf

listen_addresses = '*'
port = 5432
(省略)
wal_level = replica
synchronous_commit = local
max_wal_senders = 2
synchronous_standby_names = 'slave'
hot_standby = on
(省略)
log_connections = on
log_disconnections = on
log_statement = 'all'

# vi /var/lib/pgsql/9.6/data/pg_hba.conf

local  all         all                          trust
host   all	   all       192.168.100.0/24   trust
host   replication postgres  192.168.100.0/24   trust

設定を有効にするためPostgreSQLを再起動しましょう。
# service postgresql-9.6 restart

[root@Master ~]# service postgresql-9.6 restart
Stopping postgresql-9.6 service: [  OK  ]
Starting postgresql-9.6 service: [  OK  ]

これでMasterは完了です。
つぎに、Slaveを構築します。

Masterと同様にPostgreSQLリポジトリのダウンロードからセキュリティ関連の無効化までを行います。
# wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# rpm -ivh pgdg-centos96-9.6-3.noarch.rpm
# yum install -y postgresql96-server
# setenforce 0
# service iptables stop

pg_basebackupを使用し、MasterからSlaveにデータベースを複製します。ユーザはpostgresで実行します。
# su - postgres
$ pg_basebackup -h 192.168.100.222 -D /var/lib/pgsql/9.6/data -X stream --progress -U postgres -R

データベースが複製されたことを確認しましょう。
$ ls /var/lib/pgsql/9.6/data

-bash-4.1$  ls /var/lib/pgsql/9.6/data
backup_label  pg_commit_ts   pg_log        pg_replslot   pg_stat_tmp  PG_VERSION            recovery.conf
base          pg_dynshmem    pg_logical    pg_serial     pg_subtrans  pg_xlog
global        pg_hba.conf    pg_multixact  pg_snapshots  pg_tblspc    postgresql.auto.conf
pg_clog       pg_ident.conf  pg_notify     pg_stat       pg_twophase  postgresql.conf

次にSlaveの設定を追加します。
vi /var/lib/pgsql/9.6/data/recovery.conf

standby_mode = 'on'
primary_conninfo = 'user=postgres host=192.168.100.222 port=5432 application_name=slave'

PostgreSQLを起動します。
$ /usr/pgsql-9.6/bin/pg_ctl start -D /var/lib/pgsql/9.6/data -l ~/9.6/Slave.log

-bash-4.1$ /usr/pgsql-9.6/bin/pg_ctl start -D /var/lib/pgsql/9.6/data -l ~/9.6/Slave.log
server starting

Masterに戻って、ユーザpostgresでレプリケーション出来ていることを確認します。
Stateが「streaming」になっていれば、更新をリアルタイムに反映中です。
# su - postgres
$ psql postgres -c "SELECT * FROM pg_stat_replication" -x

[root@Master ~]# su - postgres
-bash-4.1$ psql postgres -c "SELECT * FROM pg_stat_replication" -x
-[ RECORD 1 ]----+------------------------------
pid              | 19722
usesysid         | 10
usename          | postgres
application_name | slave
client_addr      | 192.168.100.223
client_hostname  |
client_port      | 39674
backend_start    | 2017-01-16 15:17:27.228358+00
backend_xmin     |
state            | streaming
sent_location    | 0/3000140
write_location   | 0/3000140
flush_location   | 0/3000140
replay_location  | 0/3000140
sync_priority    | 1
sync_state       | sync

また、ps を使って、MasterとSlaveの各プロセスから確認することもできます。
$ ps x | grep postgres

■Master

-bash-4.1$ ps x | grep postgres
19722 ?        Ss     0:00 postgres: wal sender process postgres 192.168.100.223(39674) streaming 0/3000220

■Slave

-bash-4.1$ ps x | grep postgres
23024 ?        Ss     0:00 postgres: startup process   recovering 000000010000000000000003
23027 ?        Ss     0:00 postgres: wal receiver process   streaming 0/3000300

Masterでデータベースtestdb1とテーブルtest1を作成してみます。
$ createdb testdb1
$ psql testdb1 -c 'create table test1(id serial);'

-bash-4.1$ createdb testdb1
-bash-4.1$ psql testdb1 -c 'create table test1(id serial);'
CREATE TABLE

Slaveでもtestdb1/ test1が存在することを確認しましょう。
$ psql testdb1
testdb1=# \dt

-bash-4.1$ psql testdb1
psql (9.6.1)
Type "help" for help.

testdb1=# \dt
         List of relations
 Schema | Name  | Type  |  Owner
--------+-------+-------+----------
 public | test1 | table | postgres
(1 row)

これでPostgreSQLレプリケーションは完了です。

pgpool-II負荷分散

pgpool-IIの構築をします。

Master/Slaveと同様にPostgreSQLリポジトリをダウンロードし、yumで必要なパッケージをインストールします。
# wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# rpm -ivh pgdg-centos96-9.6-3.noarch.rpm
# yum install -y pgpool-II-96.x86_64
# yum install -y pgpool-II-96-debuginfo.x86_64
# yum install -y pgpool-II-96-devel.x86_64
# yum install -y pgpool-II-96-extensions.x86_64

セキュリティ関連の無効化を行います。
# setenforce 0
# service iptables stop

pgpool.confにて、負荷分散の設定をします。
# cp /etc/pgpool-II-96/pgpool.conf.sample /etc/pgpool-II-96/pgpool.conf
# vi /etc/pgpool-II-96/pgpool.conf

listen_addresses = '*'
port = 9999
(省略)
#Master
backend_hostname0 = '192.168.100.222'
backend_port0 = 5432
backend_weight0 = 1

#Slave
backend_hostname1 = '192.168.100.223'
backend_port1 = 5432
backend_weight1 = 1
(省略)
load_balance_mode = true
master_slave_mode = true

必要なディレクトリを作成しましょう。
# mkdir /var/run/pgpool-II-96
# mkdir /var/log/pgpool-II-96
# chown postgres:postgres /var/run/pgpool-II-96/
# chown postgres:postgres /var/log/pgpool-II-96/

pgpool-IIを起動します。
pgpool -n -d > /var/log/pgpool-II-96/pgpool.log 2>&1 &

これでpgpool-IIは完了です。

負荷分散の動作確認

それでは、負荷分散の動作確認をしてみましょう。

サーバ                                     IPアドレス              ポート番号
------------------------------------------------------------------------------
pgpool-IIサーバ                 192.168.100.224    9999
PostgreSQLサーバ(Master)   192.168.100.222    5432
PostgreSQLサーバ(Slave)     192.168.100.223    5432

Master/Slaveでログを表示させた状態で、pgpool-II に参照クエリ (SELECT文)を複数回実行し、Master/Slaveに負荷分散されていることを確認します。

■Master/Slaveでログ表示

# tail -f /var/lib/pgsql/9.6/data/pg_log/postgresql-XXX.log

■pgpool-IIで複数回実行
# psql -h 192.168.100.224 -p 9999 -U postgres -d testdb1 -c 'select * from test1;'

■ログ抜粋

Master : < 2017-01-16 16:20:59.350 UTC > LOG:  statement: select * from test1;
Slave  : < 2017-01-16 16:22:07.884 UTC > LOG:  statement: select * from test1;
Master : < 2017-01-16 16:22:16.741 UTC > LOG:  statement: select * from test1;

Master/Slaveに交互に参照クエリ (SELECT文)が実行されていることをログから確認することができました!

性能測定してみよう

今回は、pgbenchでベンチマークを取ってみたいと思います。

pgpool-II をインストールしたサーバにpgbenchを含むcontribモジュールをインストールします。
# yum install postgresql96-contrib -y

データベースtestを作成し、ベンチマークデータを初期化します。
# createdb -h 192.168.100.224 -p 9999 -U postgres test
# /usr/pgsql-9.6/bin/pgbench -h 192.168.100.224 -p 9999 -U postgres -i test

まずは、pgpool-IIとMaster/Slaveでの性能を測定してみます。
# /usr/pgsql-9.6/bin/pgbench -h 192.168.100.224 -p 9999 -U postgres -S -C -c 10 -t 1000 test

[root@pgpool ~]# /usr/pgsql-9.6/bin/pgbench -h 192.168.100.224 -p 9999 -U postgres -S -C -c 10 -t 1000 test
starting vacuum...end.
transaction type: 
scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
latency average = 43.408 ms
tps = 230.370748 (including connections establishing)
tps = 252.237263 (excluding connections establishing)

オプションを説明します。

 -h  hostname
 -p port
 -U 接続ユーザ名
 -S 読み取りのみのトランザクションを実行
 -C 各トランザクションが新しい接続を確立
 -c 同時に実行されるデータベースセッション数
 -t 各クライアントが実行するトランザクション数

つぎに、Master単独での性能を測定してみます。
# /usr/pgsql-9.6/bin/pgbench -h 192.168.100.222 -p 5432 -U postgres -S -C -c 10 -t 1000 test

[root@pgpool ~]# /usr/pgsql-9.6/bin/pgbench -h 192.168.100.222 -p 5432 -U postgres -S -C -c 10 -t 1000 test
starting vacuum...end.
transaction type: 
scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
latency average = 78.646 ms
tps = 127.151250 (including connections establishing)
tps = 141.140297 (excluding connections establishing)

Master単独に比べ、pgpool- IIとMaster/Slaveで2倍近い性能を得ることができました!

おわりに

今回は、pgpool-IIを使用してDBサーバの負荷分散を実施しました。

これからIoT時代突入により、益々データベース技術が盛り上がっていくと考えています。今後もデータベースに関する技術情報を発信できればと思います。

最後までお付き合いいただき有難うございました。

文:藤田 邦彦

pgpool-2.jpg

<参考文献>
PostgreSQL9.6 日本語マニュアル:
 https://www.postgresql.jp/document/9.6/html
 https://www.postgresql.jp/document/9.6/html/pgbench.html
PostgreSQL のポータルサイト "Let's Postgres":
 http://lets.postgresql.jp/documents/technical/replication/1/
 http://lets.postgresql.jp/documents/technical/pgpool/2/



データベースと同じカテゴリーの記事



RSS
最近のエントリー
2017.4.21
【検証自動化】第6回 AT-CLabを使ってみる
2017.4.21
【OSSチャレンジ】第4回 Elasticsearch紹介
2017.4. 7
【OSC2017 Tokyo/Spring】OpenStackを宇宙で!?
2017.3.28
【OSSチャレンジ】 第3回 Bacula紹介:後編
2017.3. 9
【OpenStackチャレンジ】 第29回 Ocata紹介編
2017.2.24
【OSSチャレンジ】 第2回 Docker紹介編
2017.2.20
【OSSチャレンジ】 第1回 Bacula紹介:前編
2017.2. 1
【体験記】最後のフロンティア!? ~ミャンマー 体験記~
2017.1.18
【データベース】pgpool-IIによるDBサーバ負荷分散
2016.12.16
【ログ解析】第2回Splunkのログ解析
2016.12. 9
LPIC304 体験記
2016.11.19
【OSC2016 Tokyo/Fall】VRとOpenStackを連携
2016.11.11
【次世代通信技術】 第1回 5G入門編
2016.10.28
【ログ解析】第1回Splunkの紹介と起動
2016.10.21
【OpenStackチャレンジ】 第28回 Stackalytics登録編
2016.10.14
【OpenStackチャレンジ】 第27回 OpenStack Newton紹介編
2016.10. 7
【検証自動化】第5回 Selenium IDEで記録したテストをJenkinsのジョブから実行する ~PC一台でブラウザテストを自動化~【後編】
2016.9.30
【OpenStackチャレンジ】 第26回 Neutron環境構築編
2016.9.23
【いまさら聞けない!エンジニアの基本シリーズ】 第6回 きれいなログにするためのLinuxお作法
2016.9.16
【OpenStackチャレンジ】 第25回 Nova環境構築編
2016.9. 9
【OpenStackチャレンジ】 第24回 Cinder環境構築編
2016.9. 2
【OpenStackチャレンジ】 第23回 OpenStackコミュニティ~翻訳編
2016.8.26
【OpenStackチャレンジ】 第22回 Glance環境構築編
2016.8.19
【検証自動化】第4回 Selenium IDEでテストケースを記録・実行する ~PC一台でブラウザテストを自動化~【前編】
2016.8. 9
【OpenStackチャレンジ】 第21回 OpenStackコミュニティ 日本語翻訳チーム参加編
2016.8. 5
【OpenStackチャレンジ】 第20回 構成管理ツール「Ansible」を用いたOpenStack上のサーバ構築
2016.7.29
【検証自動化】第3回 IT検証フォーラム2016に出展しました!
2016.7.22
【OpenStackチャレンジ】 第19回 OpenStack Upstream Training編
2016.7.15
【検証自動化】第2回 TestShell+TestCenter連携編
2016.7. 8
【OpenStackチャレンジ】 第18回 HEAT紹介編
2016.7. 4
QNAP紹介(Dockerコンテナ&OpenStack Swift連携)
2016.6.26
【いまさら聞けない!エンジニアの基本シリーズ】 第5回 GitHubを使いこなそう
2016.6.19
【OpenStackチャレンジ】 第17回 Zabbix環境構築編
2016.6.12
【検証自動化】第1回 TestShell編
2016.6. 5
【OpenStackチャレンジ】 第16回 Mirantis 「OpenStack FUEL管理」セミナー紹介編
2016.5.29
【OpenStackチャレンジ】 第15回 Swift環境構築編
2016.5.22
【OpenStackチャレンジ】 第14回 Keystone環境構築編
2016.5.15
【OpenStackチャレンジ】 第13回 Mirantis OpenStack紹介編
2016.5. 2
【OpenStackチャレンジ】 第12回DevStack~ Ironic環境構築編
2016.4.24
【OpenStackチャレンジ】 第11回 インフラエンジニア必見のOpenStackセミナーを開催しました!
2016.4.17
【OpenStackチャレンジ】 第10回 OpenStack Mitaka紹介編
2016.4.10
【Linuxを使いこなす】 CentOSのローカルリポジトリを構築しよう
2016.4. 3
【OpenStackチャレンジ】 第9回 仮想マシンが起動するコンピュートノードを指定してみよう
2016.3.29
【OpenStack チャレンジ】 第8回 ゲストマシンの性能比較をしてみました!
2016.3.19
【OSC2016】第3回 ChatOpsでOpenStackをAPIから制御する
2016.3.12
【OSC2016】第2回Let'sChat Hubot編
2016.3. 4
【OSC2016】第1回ChatOpsの構築
2016.1.31
【OpenStackチャレンジ】 第7回 DevStack~All-In-One Single Machine編
2016.1.22
【OpenStackチャレンジ】 第6回 policy.json紹介編
2016.1.13
【OpenStackチャレンジ】 第5回 Ceilometerについて知ろう!
2016.1. 8
【いまさら聞けない!エンジニアの基本シリーズ】 第4回 VMware基本動作編
2015.12.24
【1年間ありがとう!】2015年度エンジニアブログ アクセスランキング発表!
2015.12.18
【SDNチャレンジ】 第29回 Mininet編
2015.12.14
【いまさら聞けない!エンジニアの基本シリーズ】 第3回 VMwareインストール編
2015.12.10
【OpenStackチャレンジ】第4回 ConoHaでOpenStack環境を構築!
2015.12. 4
【いまさら聞けない!エンジニアの基本シリーズ】 第2回 VirtualBox基本動作編
2015.12. 4
【OpenStackチャレンジ】 第3回 OpenDaylight(Lithium)との連携に挑戦!
2015.11.27
【いまさら聞けない!エンジニアの基本シリーズ】 第1回 VirtualBoxインストール編
2015.11.20
【SDNチャレンジ】 第28回 WiresharkでOpenFlowを解析しよう!
2015.11.15
OpenStackの技術者認定資格「OPCEL認定試験」に合格しました!
2015.11. 9
「Windows Server 2003」から「Windows Server 2012 R2」への移行に不安を抱えるお客様へ
2015.11. 6
【SDNチャレンジ】 第27回 OpenMUL編
2015.10.30
【SDNチャレンジ】 第26回 ONOS-BGPルータ編
2015.10.23
【SDNチャレンジ】 第25回 ONOS GUI編 / [告知]10/24(土),25(日)にOSCに出展します!
2015.10.16
【SDNチャレンジ】 第24回 ONOSインストール編
2015.10. 9
【SDNチャレンジ】 第23回 OpenDaylightユーザ会に参加しました/Lithiumインストール編
2015.10. 2
【SDNチャレンジ】 第22回 Trema-edge編
2015.9.29
【OpenStackチャレンジ】 番外編 10/26(月)からLPI-Japanの「OPCEL認定試験」がスタートします!
2015.9.25
【SDNチャレンジ】 第21回 POX編
2015.9.18
【OpenStackチャレンジ】 第2回 コンポーネント紹介編
2015.9.11
【SDNチャレンジ】 第20回 Floodlight編
2015.9. 4
【OpenStackチャレンジ】 第1回 OpenStackインストール編
2015.9. 3
【ウェブサイトのロードテストをする】 最終回 Siege編
2015.8.28
【SDNチャレンジ】 第19回 Raspberry Piでユースケースに挑戦!
2015.8.21
【SDNチャレンジ】 第18回 OF-Patch動作編
2015.8.13
【SDNチャレンジ】 第17回 OF-Patch紹介編
2015.8. 7
Windows10をインストールしてみました!
2015.8. 4
【ウェブサイトのロードテストをする】 第3回 Tsung編
2015.7.31
【SDNチャレンジ】 第16回 Ryuコントローラインストール編
2015.7.25
【SDNチャレンジ】 第15回 Open vSwitch性能試験編
2015.7.17
【SDNチャレンジ】 第14回 Tcpreplay編
2015.7.17
RedHat OpenStack 管理者認定試験に合格しました!
2015.7.11
【SDNチャレンジ】 第13回 Vyattaコントローラ REST API編
2015.7. 3
【SDNチャレンジ】 第12回 Vyattaコントローラ動作編
2015.7. 1
【ウェブサイトのロードテストをする】 第2回 curl-loader編
2015.6.26
【SDNチャレンジ】 第11回 OpenDaylight動作編②
2015.6.19
【SDNチャレンジ】 第10回 OpenDaylight動作編①
2015.6.18
【ウェブサイトのロードテストをする】 第1回 Apache JMeter編
2015.6.12
【SDNチャレンジ】 第9回 リピーターハブとラーニングスイッチの動作比較編
2015.6. 5
【SDNチャレンジ】 第8回 Tremasharkインストール編
2015.5.25
【SDNチャレンジ】 第7回 帯域制御・ファイアウォール・パケット書換え編
2015.5.22
【SDNチャレンジ】 第6回 ラーニングスイッチ作成編
2015.5.15
【SDNチャレンジ】 第5回 Raspberry Pi2にOpen vSwitchをインストール
2015.5. 8
【SDNチャレンジ】 第4回 5/13(水)、14(木)、15(金)の展示会にて検証自動化デモを実施します!
2015.4.27
【SDNチャレンジ】 第3回 Tremaリピーターハブ編
2015.4.21
【SDNチャレンジ】 第2回 OpenFlowコントローラ作成編
2015.4.14
【SDNチャレンジ】 第1回 Tremaインストール編
2014.8.20
【注意!】8月13日のWindows Updateを適用すると起動できなくなる事例が報告されています!
2014.5.23
約6割の企業が悩んでいるのに、対策しないんですか...?
2014.1. 9
新年あけましておめでとうございます。
2013.12.24
2013年エンジニアブログ アクセスランキング発表!
2013.12.17
コミュニケーション「活性化」の第一歩
2013.10.29
なぜ儲かっているのか分からない!?
2013.10.15
「何を変えるのか、何に変えるのか、どのように変えるのか」
2013.9.17
ブラック企業にドラッカーがアドバイスするとしたら?
2013.9. 4
蟻の穴から堤も崩れる
2013.8. 6
派閥じゃなくて、理念の元に仕事をしよう!
2013.7.31
知識は使ってナンボです!
2013.7.30
御社の相互理解度はどれくらい?
2013.7. 3
何故、それが読まれたか~上半期・エンジニアブログ閲覧数ランキング~
2013.6.12
「何」を知っているかではなく、「誰」が知っているか
2013.5.28
戦後、人間尊重の信念を貫きとおした1人の経営者がいた!
2013.5.24
健康な心が、健康な会社を作る。
2013.4.26
『社長にはもうついていけません・・・』
2013.4.23
仕事と生活をバランスさせるには?
2013.4. 2
組織に必要なのは「ゆらぎ」と・・・?
2013.3.21
代表小林、バングラディシュの地に再度降り立つ
2013.3.14
色々作っちゃいました!
2013.3. 5
「心のバランスシート」に着目していますか?
2013.2. 6
Office2013発売!で、何が変わった?
2013.2. 1
「想いを語る夕べ」が新宿から30分の場所で開催可能に!
2012.12.25
エンジニアブログ番外編:決戦は「ひなたかなた」
2012.12.19
2012年エンジニアブログ&Facebook閲覧数ランキング発表!
2012.11.29
プロセス見直すのはいいけれど...大事なこと忘れてません?
2012.10.31
「仕事」と「個々の生活」の両立~ワーク・ライフ・バランス~
2012.10.26
Windows8発売!で何が起こる?
2012.10. 9
腹が減っては打ち合わせは出来ぬ?~アドック近辺ランチスポット・カフェ編~
2012.10. 2
iPhone5発売!LTE普及には切実な背景が...
2012.9.12
「だれを選ぶか」をまず決めて、その後に「何をすべきか」を決める。
2012.8.17
会社を回すのに大事な3つの感覚。
2012.8. 7
プロジェクトはたいてい失敗に終わるんです。
2012.7.19
『目の前に壁があったら、突き破るしかねえんだよ』by鬼塚
2012.7. 2
大手企業も多数協賛する「東京経営塾」の塾長とは!?
2012.6.15
メンタルヘルスケアジャパン2012報告!
2012.6. 4
御社の理念浸透力はどれくらい?!
2012.5.14
メンタルヘルスケアジャパン2012参加のお知らせ
2012.4.27
東京スカイツリーと地デジとADOC
2012.4.17
マイボトル・マイカップキャンペーン/エンジニアブログ1周年記念
2012.3.14
第1回「想いを語る夕べ」体験会レポート~伝えることの難しさ~
2012.2.29
想いを語る夕べ報告書を新聞にしちゃいました!
2012.2. 6
月刊『ニュートップリーダー』に記事掲載&"想いを語る夕べ"体験会やります!
2012.1.31
【第4回】想いを語る夕べ~フォロー編~
2012.1.23
タニタの社員食堂は"トップの想い"から生まれた!?
2012.1.13
【第3回】想いを語る夕べ~実施編~
2011.12.27
オフィスで簡単エクササイズ!
2011.12.13
【第2回】想いを語る夕べ~準備編~
2011.11.24
【第1回】想いを語る夕べ~誕生編~
2011.11.17
「責任感だけで仕事をしていた・・・。」が「自らサービスを作り上げ、喜びを感じたい!」という熱い想いに変わるまで
2011.11. 8
アドックインターナショナルはGoogleのまわし者!?
2011.10.11
あなたのその行動、誰かに監視されてませんか?
2011.9.28
たったこれだけのことで、チームに一体感が生まれる!?
2011.9.22
ADOCersがITS健康保険組合の野球大会に出場します!
2011.9.21
アドックに入社するとコンサートホールで歌えてグァムに行けるってホント?
2011.8.30
アドック社員元気の素!?
2011.8.16
電力使用制限発動!罰金は100万円!?PC電力管理ソフトのススメ
2011.8. 9
「ネットトラブル調査隊」対象エリア拡大しました!(後日談付き)
2011.8. 1
Windows7にはメールソフトが付いてない!?
2011.7.22
「社長の想いを語る夕べ」プログラムのご紹介
2011.7.12
64ビット版Windowsへの移行について
2011.7. 8
検証やテストを自動化する際に気を付けなければいけない3つの事
2011.7. 5
地デジと周波数再編とADOC
2011.6.29
アドックインターナショナルの節電対策とスーパークールビズ
2011.6.27
あるレンタカー事業会社のケース
2011.6.20
ラボルームのご紹介
2011.6.17
Interop Tokyo 2011に行ってきました!
2011.6. 7
ADOCの保守サービスと震災対応
2011.5.31
"メンタルヘルスケア・ジャパン2011"レポート
2011.5.19
「おばあちゃん家」
2011.5.11
スマートフォンは急速に普及している・・・?
2011.5. 9
ADOCの品質改善活動への取り組み事例をご紹介
2011.4.19
ADOCのお花見と節電への取り組み
2011.4. 6
復興支援のため東北へ向かっていた弊社の社員2名が戻ってきました!その2
2011.3.31
復興支援のため東北へ向かっていた弊社の社員2名が戻ってきました!
2011.3.28
弊社パートナーが被災地支援のサービス開始
2011.3.25
震災により表面化した携帯通信網の弱さ
2011.2.28
エンジニアブログスタートのお知らせ
カテゴリー
月別アーカイブ

<