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

Amazon ECSを活用したAWS運用自動化サービスの裏側を包み隠さず解説 / inside opswitch

shoito
November 01, 2019

Amazon ECSを活用したAWS運用自動化サービスの裏側を包み隠さず解説 / inside opswitch

Developers.IO 2019 TOKYO #cmdevio #cmdevio5
Amazon ECSを活用したAWS運用自動化サービス「opswitch」、その裏側では、DockerコンテナやワークフローエンジンApache Airflow、サーバ管理・監視サービスMackerel、コラボレーションハブSlackなどが活用されています。実際のサービスのアーキテクチャ、開発環境、デプロイ、監視まで、包み隠さず解説します。

shoito

November 01, 2019
Tweet

More Decks by shoito

Other Decks in Technology

Transcript

  1. ఆৗ࡞ۀͷྫ   w&$&#43%4όοΫΞοϓ w&$3%4Πϯελϯεͷى ಈɾఀࢭ w&$ΠϯελϯελΠϓͷม ߋ wηΩϡϦςΟάϧʔϓͷ࡞੒ɾ มߋɾ࡟আ

    wηΩϡϦςΟνΣοΫ wύονద༻ w"$.ূ໌ॻͷखಈߋ৽ wυϝΠϯͷखಈߋ৽ w3*ͷߪೖ w&-#1SF8BSNJOHਃ੥ w
  2. ࣗಈԽͷ೉͠͞   w࣮ߦεέδϡʔϦϯά w࣮ߦঢ়ଶɾ࣮ߦ݁ՌͷՄࢹԽ wࣦഊ࣌ͷ࠶ࢼߦ ϦτϥΠ  wλΠϜΞ΢τॲཧ wґଘؔ܎ͷ͋ΔλεΫ

    wҟৗܥϑϩʔ wϩΪϯά wฒྻԽ w੒ޭɾࣦഊͷ݁Ռ௨஌ wʜ ର৅ͷपลͰߟྀ͢΂͖ࣄ߲͕ଟ͍
  3. ࣗಈԽͰ͖ΔλεΫ܈   w &$όοΫΞοϓͷ࡞੒ w &$Πϯελϯεͷىಈɾఀࢭ w &$ΠϯελϯελΠϓͷมߋ w

    &$όοΫΞοϓͷϦʔδϣϯؒίϐʔ w &#4εφοϓγϣοτͷ࡞੒ w &#4εφοϓγϣοτͷϦʔδϣϯؒίϐʔ w 3%4εφοϓγϣοτͷ࡞੒ w 3%4Πϯελϯεͷ࡟আ w 3%4εφοϓγϣοτ͔Βͷ෮ݩ w 3%4Πϯελϯεͷىಈɾఀࢭ w ϦιʔεͷࢭΊ๨ΕνΣοΫ w ηΩϡϦςΟνΣοΫ w ʜਵ࣌௥Ճத
  4. "QBDIF"JSqPX   w044ͷ1ZUIPO੡ϫʔΫϑϩʔΤϯδϯ "QBDIF-JDFOTF  w1ZUIPOίʔυͰදݱͨ͠ϫʔΫϑϩʔ %"( ΛεέδϡʔϦϯά ˍϞχλϦϯά͢ΔϓϥοτϑΥʔϜ


    8PSLqPXBTB$PEF wෳ਺ͷλεΫ 0QFSBUPS ͷ࣮ߦॱংΛఆٛ͢ΔϫʔΫϑϩʔͷ࡞ ੒ɺεέδϡʔϦϯάɺϞχλϦϯάɺϦτϥΠɺ௨஌ͳͲ͕Մೳ "JSqPX͕ࣗಈԽͷෳࡶ͞Λαϙʔτ͢ΔͨΊɺ
 ɹɹࢲͨͪ͸ۀ຿ϩδοΫͷ։ൃʹ஫ྗͰ͖Δ
  5. "QBDIF"JSqPXͷߏ੒ཁૉ   5BTL" 5BTL# 5BTL$ 5BTL% 5BTL& 5BTL' %"(

    w0QFSBUPS
 λεΫͷςϯϓϨʔτ w5BTL
 0QFSBUPS͕Πϯελϯ εԽ͞Εͨ΋ͷ w%"(
 ϫʔΫϑϩʔɺλεΫ ͷґଘؔ܎
 1ZUIPOϑΝΠϧͰఆٛ ˞%"(%JSFDUFE"DZDMJD(SBQI
  6. %"(ϑΝΠϧͷ࣮૷   # -*- coding: utf-8 -*- import time

    from pprint import pprint import airflow from airflow.models import DAG from airflow.operators.python_operator import PythonOperator, PythonVirtualenvOperator args = { 'owner': 'Airflow', 'start_date': airflow.utils.dates.days_ago(2), } dag = DAG( dag_id='example_python_operator', default_args=args, schedule_interval=None, ) def print_context(ds, **kwargs): pprint(kwargs) print(ds) return 'Whatever you return gets printed in the logs' run_this = PythonOperator( task_id='print_the_context', python_callable=print_context, dag=dag, ) def my_sleeping_function(random_base): time.sleep(random_base) for i in range(5): task = PythonOperator( task_id='sleep_for_' + str(i), python_callable=my_sleeping_function, op_kwargs={'random_base': float(i) / 10}, dag=dag, ) run_this >> task … https://github.com/apache/airflow/blob/master/airflow/example_dags/example_python_operator.py
  7. ϝʔϧ഑৴   "NB[PO4&4 "NB[PO1JOQPJOU ݸผૹ৴ w Ϣʔβʔొ࿥ w Ϣʔβʔট଴

    w δϣϒ࣮ߦ௨஌ w ʜ ෳ਺ૹ৴ w ͓஌Βͤ഑৴ w ϝϯςφϯε௨஌ w ʜ
  8. Πϯϑϥ؀ڥ܈   ։ൃ؀ڥ ෛՙςετ
 ؀ڥ εςʔδϯά
 ؀ڥ ຊ൪؀ڥ ϩʔΧϧ


    ։ൃ؀ڥ
 EPDLFSDPNQPTF "84ΞΧ΢ϯτ9 "84ΞΧ΢ϯτ: "84ΞΧ΢ϯτ;
  9. %PDLFS$PNQPTF   WFSTJPO TFSWJDFT SFEJT JNBHFSFEJT  QPTUHSFT JNBHFQPTUHSFT

     XFCTFSWFS CVJME DPOUFYU\18%^ EPDLFSpMF\18%^%PDLFSpMF JNBHFPQTXJUDI DPNNBOEXFCTFSWFS  TDIFEVMFS JNBHFPQTXJUDI DPNNBOETDIFEVMFS  XPSLFS JNBHFPQTXJUDI DPNNBOEXPSLFS  WPMVNFT ECEBUB docker-compose.yml ෳ਺ͷίϯςφΛ࢖͏ DockerΞϓϦέʔγϣϯΛఆٛ͠ɺ ૢ࡞͢Δπʔϧ