Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Legacy App OperatorというパワーワードでCloud Native時代を乗り越...

Legacy App OperatorというパワーワードでCloud Native時代を乗り越えられないか考えてみた

OPENSHIFT.RUN 2019発表資料

Avatar for Daiki Kawanuma

Daiki Kawanuma

December 20, 2019
Tweet

More Decks by Daiki Kawanuma

Other Decks in Technology

Transcript

  1. ର৅ͱͳΔϨΨγʔΞϓϦ ΍͹͞ ͦͷ̍ ϨΨγʔΞϓϦͷ࢓༷ u +%,όʔδϣϯɿ u ϑϨʔϜϫʔΫɿ࢖༻ͤͣεΫϥον u Ϗϧυํࣜɿ"QBDIF"OUϕʔεͷಠࣗ࢓༷

    u ύοέʔδํࣜɿXBS u ΞϓϦέʔγϣϯαʔόɿ5PNDBU u ࢖༻ϓϩτίϧɿIUUQIUUQT +%#$ 3.* Web Batch Server Batch Timer DB JDBC JDBC JDBC RMI RMI
  2. ର৅ͱͳΔϨΨγʔΞϓϦ ΍͹͞ ͦͷ̎ Ϗϧυํࣜ u "OUϕʔεͷಠࣗ 8JOEPXTόον u ਺ेͷϑΥϧμΛڧҾʹXBSߏ଄ʹ্ͨ͠Ͱ ͭͷڊେͳXBSϑΝΠϧΛ࡞Γ্͛Δ

    ΞϓϦέʔγϣϯߏ଄ u ̍ͭͷXBSͰ͋Δʹ΋ؔΘΒͣϓϩηε͸̏ͭ u XBSΛల։ͨ͠ޙɺݸผʹϓϩηεΛىಈ u ґଘؔ܎͕͋Γɺىಈͷॱ൪ʹ஫ҙ͕ඞཁ # BatchServer コンポーネントプロセス java -cp /opt/apache-tomcat/…/classes/: ¥ labo.hirarins.legacy.app.batch.Server & # BatchTimer コンポーネントプロセス java -cp /opt/apache-tomcat/…/classes/: ¥ labo.hirarins.legacy.app.batch.Timer & # Web コンポーネントプロセス (Tomcat プロセス) /opt/apache-tomcat/bin/catalina.sh run
  3. ର৅ͱͳΔϨΨγʔΞϓϦ ΍͹͞ ͦͷ̏ 3.*௨৴ઌͷ ϋʔυίʔσΟϯά private static synchronized void setRegistry()

    { if (registry == null) { registry = LocateRegistry.getRegistry("localhost"); } } ΞϓϦέʔγϣϯىಈ࣌ͷ ॳظσʔλॻ͖ࠐΈ 起動 ↓ 初期データ書き込み ↓ 再起動 ↓ 初期データ書き込み失敗 起動 ↓ 初期データ書き込み ↓ スケールアウト ↓ 初期データ書き込み失敗 ←データ削除が必要→ ΞΧ΢ϯτϩοΫղআػೳͷ ܽ೗ ログイン失敗数超過 ↓ ロック解除依頼メール送信 ↓ 運用担当者のオペレーションで解除 όονॲཧͷ ϦΧόϦɾϦϥϯ • 単純リランで解決するバッチ処理エラーなど存在しない • 運用監視システムによって発報された障害連絡が運用担当者に届く • 昼夜問わず対応が強いられる
  4. -FHBDZ"QQ0QFSBUPS ͦͷ̍ apiVersion: ”example.com/v1" kind: LegacyApp metadata: name: enterprise-xxx spec:

    db-hostname: postgres.default.svc.cluster.local db-port: 5432 db-dbname: postgres db-user: postgres db-password: password ۀ຿νʔϜʹ΍ͬͯ΋Β͏͜ͱ MFHBDZBQQDSZBNM ͜Ε͚ͩʂʂ  ϏϧυࡁΈ 8BSͷఏڙ  $3ZBNMͷఏڙ
  5. -FHBDZ"QQ0QFSBUPS ͦͷ̎ ػೳผʹ 1PEΛ෼཭ 8FC #BUDI 4FSWFS #BUDI 5JNFS catalina.sh

    java BatchServer java BatchTimer "NCBTTBEPSίϯςφͷࠩ͠ࠐΈ 8FC #BUDI 4FSWFS #BUDI 5JNFS MPDBMIPTU MPDBMIPTU CBUDITFSWFS
  6. -FHBDZ"QQ0QFSBUPS ͦͷ̏ ΞΧ΢ϯτϩοΫղআ ˍ όονॲཧ ϦΧόϦ batchtimer- deployment.yaml アカウントロック 解除用コンテナ

    バッチリカバリ 用コンテナ εέʔϧΞ΢τରԠ 8FC 8FC DB Pod起動時に DBを初期化 by initContainers
  7. regacy- app:1.0.0 war 1. Legacy App Dockerfile batch-server- deployment .yaml

    batch-timer- deployment .yaml web- deployment .yaml 2. Legacy App Deployments ref legacyapp- operator .sh apply 5. Operator Shell operator: 1.0.0 include 6. Operator Dockerfile operator- deployment .yaml 7. Operator Deployment ref legacyapp- cr.yaml legacyapp- crd.yaml 4. Legacy App CR 3. Legacy App CRD ref listen 基盤チーム 業務チーム
  8. &0'