Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2016/03/18 (Fri)

マイクロサービス

| マイクロサービス - ひとり開発日記。 を含むブックマーク はてなブックマーク - マイクロサービス - ひとり開発日記。

もう二年前の記事ですけど。

でも、今、フツーにサービスを小規模で立ち上げようとすると、まぁ、基盤(IaaS/PaaS)は、AWSかHerokuですよね? と、するならば、やっぱ The Twelve-Factor App*1を意識しないといけない訳で、フツーにマイクロサービスになっている、と言えるのでないでしょうか?*2


なんでこんなことを書いたかというと、いま自分自身が、ここら辺のパラダイムの違いに困ってるからですよ(笑)

プロフェッショナルのための 実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍)

*1:The Twelve-Factor App (日本語訳) http://12factor.net/ja/

*2:マーチン・ファウラー氏による「マイクロサービスの前提条件」 - Publickey http://www.publickey1.jp/blog/14/post_246.html

トラックバック - http://program.g.hatena.ne.jp/halflite/20160318

2016/02/29 (Mon)

jOOQは楽しいですね。

| jOOQは楽しいですね。 - ひとり開発日記。 を含むブックマーク はてなブックマーク - jOOQは楽しいですね。 - ひとり開発日記。

まぁ、タイトルで出落ちですが。

また一人開発始めてるんですが、アーキテクチャ選定やるんですよね。

で、永続層/ORMが悩む訳です。 正直、JPA2.xは、使いづらい…。 コストかけて学習したのに*1、あの実地で使えない感じは、ホント嫌だなぁ、とか思うんですよねー。

で、上記スライド見て、「なんつー、今の俺」とか思うんです*2

それでもって、試すと、S2JDBCを初めて触った時のワクワク感、「これで、タイプセーフ+流れるようなI/Fで、バグもすぐ見つけられて、ハマりも少ない!!」を思い出ささてくれるんですよね。 まぁ、しばらく使ってみますかねー。

*1金魚本って、何だったんでしょうね…??? http://amazon.jp/dp/4798124605

*2:まぁ、JavaのORMのバリエーションが少なくて、開発/イノベーションが停滞してる、ということなんですがー…

トラックバック - http://program.g.hatena.ne.jp/halflite/20160229

2016/01/01 (Fri)

2016年に求められていること

| 2016年に求められていること - ひとり開発日記。 を含むブックマーク はてなブックマーク - 2016年に求められていること - ひとり開発日記。

2015年は、チーム開発に入っちゃったので、途中からあんま日記を書かなくなりましたね…。

以下は、中小企業/予算少ない、ちょっと硬めのドメイン領域の開発/運用改善で、これから意識しなくちゃいけないだろうなぁ、と言うところです。*1

モダンレガシー

こう言うの、多いんじゃないでしょうか。 ここら辺を、モダンに、スマートに再設計/再構築する必要がありますよね。*2

作らない開発

IaaS/PaaS/SaaSなんかは、普通に使うことになるでしょうね…。 と言うか、社内に閉じた運用ツール云々は、全部Google AppsとかAWS Lambda辺りに移行しても良いんじゃないでしょうか。

勿論、そういうクラウド/揮発性のリソースに、システム置くことを、エンジニアの思考の中心に置かなければいけないので、そういうパラダイムの変化についていけない人も出てくるかもですね…。

業務アプリUI/UX

そういう箇所に予算割けないのは、重々承知なんですが、これで、業務効率全然違ったりするので、専門家とのコネ作っておく必要あるんじゃないかな…。

*1:個人視点です

*2Seasar2サポート終わりますしね http://itpro.nikkeibp.co.jp/atcl/column/15/031800050/031800002/

トラックバック - http://program.g.hatena.ne.jp/halflite/20160101

2015/10/14 (Wed)

Vagrantで起動したCentOS6.7にMySQL5.6をAnsibleでインストール

| Vagrantで起動したCentOS6.7にMySQL5.6をAnsibleでインストール - ひとり開発日記。 を含むブックマーク はてなブックマーク - Vagrantで起動したCentOS6.7にMySQL5.6をAnsibleでインストール - ひとり開発日記。

VirtualBoxCentOSインスタンスを作って、Vagrantで起動し、それにMySQLインストールして、ローカル試験環境として使ってるのですが、誤って vagrant destroy してしまうこともありますよね…?*1

折角の仮想環境なので、すぐに作ったり壊したり出来たほうがいいよなぁ、と言うことで、手順をここに書いておきます。

方針
  1. ホストOSWindows7、ゲストOSはCentOS6.7
  2. VagrantVirtualBox を起動
  3. 仮想環境にSSHログイン
  4. Ansibleをインストール
  5. Ansible Playbookをコピー
  6. hosts設定
  7. AnsibleでMySQLインストール

お仕事でMacじゃなくてWindowsマシンの人、多いでしょう? で、WindowsにAnsible入れるのってのも無謀な気がしましたし。 試験環境として、MySQLだけ動けば良いわけですので、ベストプラクティス*2は無視して、一枚ペラのPlaybookをローカル実行、と言う方針で。

環境
VagrantVirtualBox を起動
  • Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.define :server_db do |node|
    node.vm.box = "box-cutter/centos67"
    node.vm.box_version = "2.0.5"
    node.vm.network :private_network, ip:"192.168.33.15"
  end

  config.vm.provider "virtualbox" do |v|
    v.gui = true
  end

end

Vagrantfileはこんな感じで。 boxは、Atlas上にあるミニマムCentOS環境 box-cutter/centos67 v2.0.5 を使い、固定IPは 192.168.33.15 で。

vagrant up

で起動します。

仮想環境にSSHログイン

仮想環境へSSHログインします*3 ユーザー:vagrant / パスワード:vagrantログインできます。

Ansibleをインストール
sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo yum -y install ansible

ミニマム過ぎて、EPELリポジトリも入ってないので、まずEPELリポジトリインストール。 その後でAnsibleをインストールします

[vagrant@localhost ~]$ ansible --version
ansible 1.9.4
  configured module search path = None

この時点でのAnsibleのバージョンは 1.9.4

Ansible Playbookをコピー
  • playbook.yml
- hosts: all
  remote_user: vagrant
  sudo: yes

  tasks:
    - name: yum update all
      yum: name=* state=latest

    - name: install MySQL Yum Repository
      yum: name=https://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm state=present

    - name: install MySQL/MySQL-python/libselinux-python
      yum: name={{ item.name }} enablerepo={{ item.repo }} state=present
      with_items:
        - { name: "mysql-community-libs-compat", repo: "mysql56-community" }
        - { name: "mysql-community-client", repo: "mysql56-community" }
        - { name: "mysql-community-server", repo: "mysql56-community" }
        - { name: "MySQL-python", repo: "epel" }
        - { name: "libselinux-python", repo: "epel" }

    - name: add my.cnf character-set-server
      replace: dest=/etc/my.cnf regexp="^\[mysqld\]$" replace="[mysqld]\ncharacter-set-server=utf8"

    - name: start MySQL service
      service: name=mysqld enabled=yes state=started

    - name: add MySQL work user
      mysql_user: name=dbuser password=dbpassword1 host={{ item }} priv=*.*:ALL,GRANT state=present
      with_items:
        - "localhost"
        - "%"

vi等でコピー。*4

hosts設定
echo "127.0.0.1" | sudo tee /etc/ansible/hosts > /dev/null

/etc/ansible/hostsにローカルIPだけ設定*5

AnsibleでMySQLインストール
sudo ansible-playbook playbook.yml -c local

playbookが反映され、MySQLが起動されている(はずです)

*1:本日のワタクシがそうでした…

*2:Best Practices — Ansible Documentation http://docs.ansible.com/ansible/playbooks_best_practices.html

*3クライアントTeraTerm 等で https://osdn.jp/projects/ttssh2/

*4:本当はGitHubとかにコミットしておいて、git cloneで持ってくるのが良いのかもですけど

*5sudoリダイレクトが Permission denied になる件 | CUBE SUGAR STORAGE http://bit.ly/1VSAkPS

トラックバック - http://program.g.hatena.ne.jp/halflite/20151014

2015/10/01 (Thu)

EclipseLink/JPAのエンティティクラスから作成したDDLを、flywayでマイグレーション

| EclipseLink/JPAのエンティティクラスから作成したDDLを、flywayでマイグレーション - ひとり開発日記。 を含むブックマーク はてなブックマーク - EclipseLink/JPAのエンティティクラスから作成したDDLを、flywayでマイグレーション - ひとり開発日記。

EclipseLink/JPAのエンティティクラスから、CREATE TABLEのDDLを、Mavenで作成 - ひとり開発日記。 - プログラマの秘密のあれこれ の続きです。

DBマイグレーションツールflywayは、Mavenプラグイン形式でも提供されているので、別個インストールしなくても、pom.xmlに記述するだけで実行OKなんですね。

そして、結構面倒くさいConfiguration設定も、必要なだけ properties の中で flyway.*** 形式で記述するだけで良いのです。

    <properties>
        <flyway.url>jdbc:mysql://127.0.0.1:3306/testdb</flyway.url>
        <flyway.user>testuser</flyway.user>
        <flyway.password>testpassword</flyway.password>
        <flyway.locations>filesystem:${project.basedir}/db/migration</flyway.locations>
    </properties>

    <build>
        <plugins>
             <plugin>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-maven-plugin</artifactId>
                <version>3.2.1</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.36</version>
                    </dependency>
                </dependencies>
            </plugin>
       </plugins>
    </puild>

JDBCURL、ユーザー、パスワードDBのドライバーは、それぞれ自分の環境に合わせて頂いて…。

mvn flyway:migrate

上記を実行すると、DDLDBに流し込まれて、各種テーブルが出来上がります。

トラックバック - http://program.g.hatena.ne.jp/halflite/20151001