á¡ááá¯ááºáž 1- áááº/Android
ááœá±á¬ááá¯: á€áá±á¬ááºážáá«ážááẠáá°áááºážáá±á¬ááºážáá«ážá áá¯ááŸá¬ážáá¬áá¬ááá¯á· áá¬áá¬ááŒááºááŒááºážááŒá
áºáááºá
áááºááŸáááœááºá DevOps á¡áá°ážááŒá¯ááẠá¡áá¯ááºáá®á
ááºááŸá¯áá¯ááºáááºážááœáẠáááºááá¯á¡á¬ážá¡ááŸááá¯á¶ážáá
áºáá¯ááŒá
áºáááºá áá°ááŒáá¯ááºáá»á¬ážáá±á¬ á¡áá¯ááºááŸá¬ááœá±áá±ážááá¯ááºáá»á¬ážááá¯ááœáá·áºááŒá®áž áá
á¬ááŒáá·áº á
á
áºáá¯ááºáá«áá DevOps ááŸáá·áºáááºáááºááá·áº á¡áá¯ááºáá»á¬ážááẠá
á¬áááºážáááááºááœáẠááŸááá±áááºááᯠáááºááœá±á·ááá«áááºá ááá¯á·áá¬ááœááºá áááºážááẠá¡áááá¡á¬ážááŒáá·áº 'á
á®áá®áá¬' áá¬áá°ážááᯠáááºááœáŸááºážááŒá±á¬ááºáž áá¬ážáááºááẠá¡áá±ážááŒá®ážááŒá®áž ááá¯ááºá
á¬ážááŸááºáá±á¬ááºážááœáẠá¡áááºá¡áá»ááºážá áááºážááá¬ááŸáá·áº áááááá¬áá»á¬ážááá¯ááºáᬠáá»áœááºážáá»ááºááŸá¯ ááŒáá·áºáá¬ážáááºáᯠááá¯ááá¯áááºá áááºážááẠáá¯ááºáá¯ááºááŸá¯á á¡ááŸá±á¬ááºá¡ááŸááºáááºážáá±á¬ áááºáááºááŸá¯ááŸáá·áº áááºááœáŸááºááá·áº ááŒáá·áºáá¬ážáá±á¬ áá¬áááºáááºáž áá«áááºáááºá ááá¯á·áá±á¬áºá áá»áœááºá¯ááºááá¯á·ááẠDevOps áá°áááºááᯠáá±á·á
ááŒá¯áá¬áááºá á¡á
ááá±á¬á· áá®ážááŒá¬ážáá¯áá¹ááá¯áẠáá«ááŸááá¯áẠáá¬ááá
áºáá¯á០ááá¯ááºáá°ážá á€á¡áá¯á¶ážá¡ááŸá¯ááºážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááᯠááŸá¬ááœá±áá«áá áááºážá
áá
áºáá»áá±á¬á á¡áá±á·á¡áá»áá·áºáá»á¬ážá áááºáá»á±ážááŸá¯áá¿ááááá±áá á¡áá°á¡áá¡á¯ááºá
á¯á
áááºááŒáá·áº ááŸáááŒá®áž ááŸááºáááºáá±á¬áá¬ááºáá»á¬ážá
áœá¬ááᯠááœá±á·ááá«áááºá
áá»áœááºá¯ááºá á¡áá°ážááŒá¯ááŸá¯ááŸá¬ á ááºážáááºááŸá¯ á¡ááá¯á¡áá»á±á¬ááºá áá Ạá¡ááºáá»ááºáá®áᬠ(QA á¡ááá¯á¡áá»á±á¬ááºá áá Ạá¡ááºáá»ááºáá®áá¬) ááŒá áºáááºá ááá¯á·áá±á¬áº áááºážááẠá¡ááá¯á¡áá»á±á¬áẠá ááºážáááºááŸá¯áá»á¬ážááᯠáá±ážáá¬ážááŒááºáž ááá¯á·ááá¯áẠá ááºážáááºááŸá¯áá±á¬ááºáááá¯áᬠáááºáá±á¬ááºááŒááºážááŸáá·áºáᬠáááºá ááºááŸá¯ áááŸáááá·áºáᯠáá¯á¶ááŒááºáá«áááºá 2020 ááœáẠautomation infrastructure ááá¯ááºáá¬á¡ááááá¬áááºáááºáž áááŸááááŒá áºááá¯á¡ááºáá«áááºá áááºážááẠááá·áºá¡á¬áž áááºááááºážááá¯ááºáá»á¬ážááŸáá·áºá¡áá® áááºááá¯ááºáá°á¡á¬ážáá¯á¶ážááᯠááááºáá»á¬ážáá±ážáá±á¬ááºááŒááºážá¡ááá áááºááẠá¡ááá¯á¡áá»á±á¬ááºá áá áºááá¯ááºáᬠáá¯ááºáááºážá ááºááᯠáááºááá¯ááºááá¯áẠá á¯á ááºážááá¯ááºá á±áááºááŒá áºáááºá ááááºá¡áá±ááŒáá·áº DevOps áá»áœááºážáá»ááºááŸá¯ááẠá¡áá¯ááºááŒá®ážááŒá±á¬ááºááẠááá¯á¡ááºáá«áááºá á€á¡áá¬á¡á¬ážáá¯á¶ážááẠáá±á¬ááºážááœááºáá±á¬áºáááºážá áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá ááŒá¿áá¬áá áºáá¯ááŸááá±áá«áááºáspoiler- á€áá±á¬ááºážáá«ážááẠá€ááŒá¿áá¬ááᯠááá¯ážááŸááºážá á±ááẠááŒáá¯ážá á¬ážáááºá) á¡áááá¡áá»ááºááŸá¬ DevOps áááºáááºáá²áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áá¯áá¹ááá®áá»á¬ážááẠáá¯ááºáá±á¬ááºáááœááºáá°áá±á¬ á¡áá¬áá áºáá¯á¡ááœáẠáá»á¬ážá áœá¬áá±ážáá»á±áááºááá¯ááºáá±á¬ááŒá±á¬áá·áº áááºááŸá¬ážáá«áááºá DevOps ááá¹áá¬ááœááºá áá»áœááºážáá»ááºáááºááá¯á¡ááºáá±á¬ áááááá¬áá»á¬ážá áá±á«áá¬ááá»á¬ážááŸáá·áº á¡áá±á·á¡áá»áá·áºáá»á¬ážá áœá¬ááŸááááºá áááºážááẠá¡áááºááœá±ážáááºážáá»á±á¬ááºážáá áºáá¯áá¡á ááœáẠá¡áá°ážáááŒáá·áº áááºáá²ááŒá®áž á á¯áá±á¬ááºážáá¬ážáá±á¬ áááºážááá¬ááá¯ááºáᬠá¡ááœá±á·á¡ááŒá¯á¶á¡áá±á«áº áá°áááºáá«áááºá
source:
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááá«ááºážá¡ááá¯ááºážááŒáá·áº ááŒá®ážáá¯á¶ážááŒá®áž á€áá±á¬ááºážáá«ážá áááºááœááºáá»ááºááᯠá¡á¬áá¯á¶á áá¯ááºáá«áááºá
áá®áá±á¬ááºážáá«ážá áá¬á¡ááŒá±á¬ááºážáá²á
á€áá±á¬ááºážáá«ážááœááºá áá»áœááºá¯ááºááẠá ááºážáááºááŸá¯ automation á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áááºáá±á¬ááºááŒááºážá¡ááœá±á·á¡ááŒá¯á¶ááᯠáá»áŸáá±áá«áááºá áááááá¬áá»áá¯ážá á¯á¶ááŸáá·áº áááºážááá¯á·ááá¯á¡áá¯á¶ážááŒá¯áá¯á¶ááŸáá·áºáááºáááºááá·áº á¡ááºáá¬áááºáá±á«áºááœáẠááááºážá¡áá»ááºá¡áááºáááºážááŒá áºáá»á¬ážá áœá¬ááŸááá±á¬áºáááºáž áááºážááá¯á·ááᯠá¡ááá¯á¡áá»á±á¬ááºá áá áºáá¡ááŒá±á¡áá±ááœááºáᬠááŒáá·áºááá¯áá«áááºá áá®ááœááºá ááºážáááºááŸá¯áá»á¬ážááᯠáááºáá¯ááºáá±á¬ááºááẠááá¯á·ááá¯áẠááááºážááááºážááẠááá¯á áá¯ááºááŒááºážááŸááœá²á áááºáá°áá»áŸ á¡ááá¯á¡áá»á±á¬ááºá áá áºááá¯ááºáᬠá¡ááºáá»ááºáá®áá¬áá»á¬ážá áœá¬ááẠá¡ááŒá±á¡áá±ááᯠáááºážááŸá®ážáá±ááŒáááºáᯠáá»áœááºá¯ááºáá¯á¶ááŒááºáá«áááºá ááááºá¡áá±ááŸáá·áºá á á¬áá±ážááœá²áá»á¬ážááẠáá±ááºááá®áá±á¬á·áááŒáá·áº áááºážááá¯á·ááᯠááœááºážáá¶ááŒááºáááºááẠá¡áá»áááºááŒá¯ááºážááááºááŒá áºáááºá áá áºáááºá á¡áááºááœá±ážáááºážááŒá±á¬ááºážáá áºáá¯áá¡á ááœááºá á€á¡áá¬ááẠá¡ááœááºáááºáá²áá±á¬á¡áá¯ááºáá áºáá¯ááŒá áºááá¯ááºáááº- áá±ážáá¬ážáá±á¬ááŒá¿áá¬áá áºáá¯ááá¯áááºááŸá¬ážáá áºáááºá áááºážááá¯á·ááá¯áááºááá¯á·ááœá±ážáá»ááºááááºá áááºááá¯á·ááááºážááááºážááá·áºáááºááᯠááá¬ááŸáá áœá¬áá¯á¶ážááŒááºáá«á á ááºážáááºáá°á¡áá»áá¯á·ááẠá¡áá°á¡áá®ááá°ááẠDevOps (áá°áá¬ážáá»á¬áž)áá¶ááŸáá·áºáá¬ááŒá®ážá á€áááºážáááºážááẠááá¯ážáá¬ážááŒáá«á áá¯á·á á¡ááŒá±á¡áá±áá»á¬ážá áœá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááœáẠááŸá®ááá¯ááŸá¯á¡á¬ážáá¯á¶ážááᯠááŒááºááá¯ááºá áœááºážáááŸááá±á¬ááŒá±á¬áá·áº áááºážááẠáá áºáá¯áááºážáá±á¬ááœá±ážáá»ááºááŸá¯ááŒá áºááá¯ááºáááºá ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááááá·áºá¡ááá¯ááºáž DevOps ááẠáá¯áá¹ááá®áá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯áá¯á¶ážá ááŒáá·áºáá»ááºááŸá¯á á á±á¬áá·áºááŒáá·áºááŸá¯á á¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááœá²á·á¡á ááºáž/á¡ááœá²á·á¡áá±á«áº áá°áááºá á¡ááŒá¬ážá¡áá¬ážáá°á¡áá¯ááºáá»á¬ážá¡ááŒá±á¬ááºáž á ááºážá á¬ážááá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááẠá¡ááœááºá¡áá¯ááºáá»á¬ážáá°áá»á¬ážááŒá áºáááºá áá¯á¶ááŸááºá¡ááŒá±á¡áá±á¡ááá¯ááºážá á¡ááá¯á¡áá»á±á¬ááºá áá áºááẠáŠážá á¬ážáá±ážááá¯ááºáá«á áá®ááá¯á¡ááŒá±á¡áá±áá»áá¯ážááŸá¬ áááºááá¯ááºááá»áŸ á¡á á¡áá¯á¶áž ááŒáá¯ážá á¬ážááŒá®áž áá¯ááºááááºá áááºážááẠááŸá®ááá¯á¡á¬ážáá¬ážááŸá¯áá»á¬ážááᯠáá»áŸá±á¬á·áá»áá±ážáááºááŒá áºááŒá®ážá á¡áá¯ááºá¡ááœá¬ážá¡áá¬ááᯠá¡ááŸáááºááŒáŸáá·áºáá¬á áá»áœááºá¯ááºááá¯á·á á¡áááºá¡áá»ááºážáá»á¬ážááᯠááŒáŸáá·áºáááºáá±ážááŒá®áž ááŒá áºáá»ááºáá±ááá·áºá¡áá¬áá»á¬ážá ááŒá®ážáá¬ážáá¯á¶ááᯠááŒááºááá¯ááºá á±áááºááŒá áºáááºá
áá±á¬ááºážáá«ážááœáẠáá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶ážááŸáá·áº áá±áááºážá¡á á¬ážáá¯á¶áž áááááá¬áá»á¬ážááᯠáááºáááºáá¬ážááŒá®áž á¡ááá¯á¡áá»á±á¬ááºá áá Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠá¡ááá·áºááá·áºáááºáá±á¬ááºááẠáááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯áá¯á¶ááᯠááŒááá¬ážáááºá á¡á¯ááºá á¯áá áºáá¯á á®ááᯠááá¯ááºáá±ážááá¯ááºáá¬á¡ááœá±á·á¡ááŒá¯á¶á¡á¬ážááŒáá·áº á ááºážáááºáá¬ážáá±á¬ áááááá¬áá»á¬ážááŒáá·áº ááá¯ááºá á¬ážááŒá¯áá«áááºá áá«áá±ááá·áº á¡á²áá«á á¡áá°áá°áá¯á¶ážááááºááá¯á· áááá¯ááá¯áá«áá°ážá áááááá¬ááœá±á á¡áá±ážáááŒá®ážáá°ážá áá±á«áºáá¬ááŒá®áž á¡áá¯á¶ážáááŒá¯áá±á¬á·áá°ážá áá»áœááºá¯ááºááá¯á·á á¡ááºáá»ááºáá®áá¬áá¯ááºáááºážáá¬áááºááŸá¬ á¡ááŒá±áá¶áá°áá»á¬ážááᯠáá¬ážáááºáááºááŒá áºáááº- áá»áœááºá¯ááºááá¯á·ááẠá€áááááá¬á¡á¯ááºá á¯ááᯠá¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááááºážá áááºážááá¯á·á¡áá°á¡áá®ááŒáá·áº áá»áœááºá¯ááºááá¯á·ááŒá±ááŸááºážááá¯ááºáá±á¬ á¡áá¯ááºááŒá¿áá¬áá»á¬ážááᯠá¡áááºá¡áá¬ááá¯á¡ááºááááºážá ááá¯á·ááŒá±á¬áá·áº ááá¹ááá áºáá¯á á®áá¡áá¯á¶ážááœáẠááá·áºá¡ááœá²á·á¡á ááºážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº á¡áá¬ážáá°áááááá¬áá»á¬ážáá®ááá¯á· ááá·áºááºáá»á¬ážááᯠáá»áœááºá¯ááºáá»ááºáá¬ážáá²á·áááºá
áá®áá±á¬ááºážáá«ážááŸá¬ áá¬ááá«áá²á
áá±á¬ááºážáá«ážááẠáááá»áá±á¬áááááá¬áá»á¬ážá¡ááŒá±á¬ááºážááá¯ááºááŒá±á¬ááºážá ááá¯á·ááŒá±á¬áá·áº á á¬ááœááºá á¬áááºážáá»á¬ážááŸáá·áº áá®ážááŒá¬áž command áá»á¬ážáá±á¬áºááŒáá»ááºáá»á¬ážá០áá¯ááºááá·áºááœááºážááŒááºážááŸááá±á¬á·áááºááá¯ááºááŒá±á¬ááºáž áááºáá«ááá²áá²ááŒá±á¬áá«áááºá áá«áá±ááá·áº á¡ááá¯ááºážáá áºáá¯áá»ááºážá á®áá²á· á¡áá¯á¶ážááŸá¬áá±á¬á· á¡áá±ážá áááºáá±á·áá¬ááá¯á·á¡ááœáẠlink ááœá±ááᯠáá»ááºáá¬ážáá²á·áá«áááºá
á€ááá¯á·áá¯ááºáá±á¬ááºáááŒááºážááŸá¬-
- á€á¡ááŒá±á¬ááºážá¡áá¬ááᯠá¡áááºážá¡ááŒá áºáá»áá¯ážá á¯á¶ (á á¬ááœááºá á¬áááºážá á á¬á¡á¯ááºáá»á¬ážá áá®áá®ááá¯áááºáááºážáá»á¬áž) ááœáẠááŸá¬ááœá±ááẠá¡ááœááºááœááºáá°áá«áááºá
- á¡áááºá áá»áœááºá¯ááºááá¯á· ááá¯ááá¯áááºááŸáá¯ááºážáá¬áá«áá á€áá±á¬ááºážáá«ážá á¡ááá¯ááºáž 10á 20á 30 ááᯠáá±ážááá«ááẠ(á¡á á®á¡á á¥áºáá»á¬ážááŸá¬ 2-3 ááŒá áºáá±á¬áºáááºážá
- áá°áá®áá²á·áááºážááá¯ááºááá¯áá±á¬ááºááá¯á· áááŒá¬ážáááááá¬ááœá±ááᯠáá¯á¶ážáá»ááºáá¬ááŒá±á¬áá·áº áááºážáá²á·á¡áá»áááºááœá±ááᯠáá«áááŒá¯ááºážáá»ááºáá°ážá
á¡áá±á·á¡áá»áá·áº
áá®á¡ááŒá±á¬ááºážá¡áá¬ááᯠáááºááŒá®áž áá±á·áá±áá¯á¶áááºááá¯ááºáá² á
á¬áááºáá°ááá¯ááºážá¡ááœáẠá¡áá¯á¶ážáááºá
á±áá»ááºáá«áááºá áááºááá·áºáá±á·áá¬ááŸá¯ááœááºáááᯠá¡áá±á·á¡áá»áá·áºááẠá¡ááœááºá¡áá±ážááŒá®ážáá±á¬ á¡á
áááºá¡ááá¯ááºážáá
áºáá¯ááŒá
áºáááºá áá®á¡ááœáẠáá»áœááºáá±á¬áºááŒááºáááºáá¬ážáá«áááºá
á á®áá¶ááááºáž
ááŸááºáž
áááºážááá¬
Tools áá»á¬áž
1
á
ááºááœááºážá¡áá¯á¶ážááŒá¯ááŒááºáž (áááº/ android ááá¯ááºááŒá
ááºážáááºááŸá¯áá»á¬ážááᯠááŒááºáááºááŒá®áž áááºážááᯠá
ááºááœááºážááœáẠá¡áá¯á¶ážááŒá¯áá«)
Node.jsá Seleniumá Appium
2
áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á
áá
áºáá»á¬áž
git
3
Containerization
Dockerá Selenium gridá Selenoid (áááºá Android)
4
CI/CD
Gitlab CI
5
Cloud ááááºáá±á¬ááºážáá»á¬áž
áá°áááºááºááááºááá¯ááºááááºáá±á¬ááºáž
6
orchestration
Kubernetes
7
áá¯áẠ(IaC) á¡ááŒá
Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ
Terraformá Ansible
ááá¹ááá áºáá¯á á®á ááœá²á·á ááºážáá¯á¶
áá¬ááºááŒá±á¬ááºážááᯠááŸááºážááŸááºážáááºážáááºážááá á±ááẠá¡ááá¯ááºážáá áºáá¯á á®ááᯠá¡á±á¬ááºáá«á¡ááŒááºážáá»ááºážá¡ááá¯ááºáž áá±á¬áºááŒáá¬ážáá«áááºá
- áááºážááá¬á¡áá»ááºážáá±á¬áºááŒáá»ááºá
- automation á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áááºááá¯ážá
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážá áááºááŸáá¡ááŒá±á¡áá±á
- áá±á·áá¬áááºááá·áºááºáá»á¬ážá
- á¡áá¬ážáá°áááááá¬áá»á¬ážá
1. á ááºážáááºááŸá¯áá»á¬ážááᯠá ááºááœááºážááœáẠáá¯ááºáá±á¬ááºáá«á
áááºážááá¬á¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº
á€áááºááŸá¬ á ááºááœááºážááá¯ááºááŒá ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºááŸáá·áº áááºážááá¯á·á¡á±á¬ááºááŒááºááŒá±á¬ááºáž á¡áááºááŒá¯ááẠááŒáá¯áááºááŒááºáááºááá·áºá¡ááá·áºáá»áŸáá¬ááŒá áºáááºá áááºááœá±á·áá»áá±á¬á¡ááá¯ááºážááœááºá Node.js ááᯠá¡áá¯á¶ážááŒá¯áá±á¬áºáááºáž áááá¯ááááºážáááºážáá¬áá¬á áá¬ážááŸáá·áº ááááºáá±á¬ááºážááẠá¡áá±ážáááŒá®ážááá·áºá¡ááŒáẠááá·áºáá¯áá¹ááá®ááœáẠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬áá»á¬ážááᯠáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
ááá¯á·áá±á¬áºá á¡ááá¯á¡áá»á±á¬ááºá áá áºááá¯ááºáá¬áááááá¬áá»á¬ážá¡áá±ááŸáá·áºá áááºááááºáá±á¬ááºážáá»á¬ážá¡ááœáẠSelenium WebDriver ááŸáá·áº Android ááááºáá±á¬ááºážá¡ááœáẠAppium á¡áá®ážáá®ážááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯ááá¯áááºááŸá¬á áá±á¬ááºá¡ááá·áºáá»á¬ážááœáẠáá»áœááºá¯ááºááá¯á·ááẠá€áááááá¬áá»á¬ážááŸáá·áº á¡áá°ážáá¯ááºáá±á¬ááºááẠá¡á¶áááºááœááºáá»ááŒá áºáá±á¬ Docker áá¯ááºáá¯á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºáá±á¬ááŒá±á¬áá·áºá ááá¯á·á¡ááŒááºá á¡áá¯ááºá¡ááá¯ááºááá¯á¡ááºáá»ááºáá»á¬ážááᯠáááºááœáŸááºážááŒá®áž á€áááááá¬áá»á¬ážááẠá á»á±ážááœááºááœáẠá¡áááºá¡áá»á¬ážáá¯á¶ážááŒá áºáááºá
áááºáááááŒá¯ááááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºááá¯á·ááẠáááºááŸáá·áº Android á ááºážáááºááŸá¯áá»á¬ážááá¯áᬠá ááºážá á¬ážáá«áááºá áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá iOS ááẠáá¯á¶ážáááŒá¬ážáá¬ážáá±á¬ áá¬ááºáááºážáá áºáá¯ááŒá áºááẠ(Apple ááá¯áá»á±ážáá°ážáááºáá«áááº)á áá¬ááá·áºá¡ááá¯ááºážáá»á¬ážááœáẠIOS ááá¯ááºáᬠááŒá±ááŸááºážáá»ááºáá»á¬ážááŸáá·áº á¡áá±á·á¡áá»áá·áºáá»á¬ážááᯠááŒáááẠá á®á ááºáá¬ážáá«áááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ ááŸá¯áá±á¬áá·áºááŸááŒáá·áºáá»áŸáẠááŒááºááœááºážá áááºáááºááŒááºážááẠáááºááá·áºáááºááá¯ážááá¯áá»áŸ áá±ážá áœááºážáááºááá¯ááºáá±á á ááºážáááºááŸá¯áá»á¬ážááᯠlocal browsers áá»á¬ážááŸáá·áº simulators áá»á¬ážááœáẠlocal machine ááœááºáᬠáá¯ááºáá±á¬ááºááŒá±á¬ááºáž áááºá á áºáá±ážáá«á áááºááá¯á·áááºááá¯á á±áá¬áá° á€á¡áá¬ááẠááá¯á¡ááºáá±á¬ á¡á áá»áá¯ážááŸá¯áá áºáá¯ááŒá áºáááºá
áááºááŸá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡ááŒá±á¡áá± áá¯á¶á¥ááá¬
áá±á·áá¬áááºááá·áºááºáá»á¬áž
áááºáá®áá®ááẠAppium á¡ááºážáááœáá¯áẠemulator Selenium JS GitHub á¥ááá¬áá»á¬áž Appium JS GitHub á¥ááá¬áá»á¬áž
á¡áá¬ážáá°áááááá¬áá»á¬áž
- Selenium/Appium á ááºážáááºááŸá¯áá»á¬ážááŸáá·áºá¡áá° áááºááŸá áºáááºááá·áº áááºááá·áº áááá¯ááááºáá¬áá¬á áá¬ážáááá¯á
- áááºááá·áºá á áºáá±ážááŸá¯áá»á¬áž;
- áááºááá·áºá ááºážáááºááŸá¯á¡ááŒá±ážááá¬ážá
2. áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á áá áºáá»á¬áž (Git)
áááºážááá¬á¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº
áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯ááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á á¡ááœááºá¡áá±ážááŒá®ážáá±á¬ á¡á áááºá¡ááá¯ááºážáá áºáá¯ááŒá áºáááºáᯠáá«ááá¯áá«á áááºáá°áá áºáŠážáá áºáá±á¬ááºá¡ááœááºá០ááŒá®ážááŒá®ážáá¬ážáá¬áž áá±á«áºááœááºážáá¬áááá·áºáááºááá¯ááºáá±á áááºážááŒá áºá¡áá»áá¯ážáá»áá¯ážááᯠá¡ááŒá±áá¶á Git ááẠáá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶áž ááá¯ááºá á¬ážááŸááºááŒá áºáááºáᯠááá¯ááẠá áááºáá»ááááºá áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á áá áºááẠáá¯ááºáá»áŸáá±ááŒááºážá áá¬ážááŸááºážáá»á¬ážááᯠááááºážáááºážááŒááºážá ááááºá¡ááá¯ááºážá¡áááºáá»á¬ážááᯠááŒááºáááºááá°ááŒááºážá ááá±á¬áá»ááºááŸááºáááºážááᯠá á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº á¡áááºááááºážáááºážááŒááºážáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážá áœá¬ááᯠáá±ážáá«áááºá á¡áá»ááºáá áºáá¯áá»ááºážá á®ááᯠá¡áá±ážá áááºááœá±ážááœá±ážááŸá¬ ááá¯ááºáá«áá°ážá áááºá á¡á²áá«ááᯠá¡áááºážáááºážááŸá®ážááŒá®áž áá±á·á ááºáá¯ááºáááºážááœááºááŸá¬ áá¯á¶ážáá¬áá±áá»á¬áá«áááºá áá«áá±ááá·áº áá¯ááºááááºááá¯ááºááẠáá®áá±á¬ááºážáá«ážááᯠáá±áá¹ááááºááŒá®áž áá®ááœááºáááºááᯠá¡ááŒááºáá¯á¶ážááŒáá·áºááá¯á· á¡ááŒá¶ááŒá¯áá»ááºáá«áááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
á€ááœáẠáááºááẠáá»áá¯ážááŒá±á¬ááºážáá®áá»á±á¬áºáá±á¬áá±ážááœááºážááᯠáá±ážááá¯ááºáááº- "áá°á áá¬ááŒá±á¬áá·áº Git á¡ááŒá±á¬ááºáž áá«ááá¯á·ááᯠááŒá±á¬ááŒáá¬áá²á áá«ááᯠáá°ááá¯ááºážááááŒá®áž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáá²á· á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºáá¯ááºá¡ááœááºáá±á¬ á¡áá¯á¶ážááŒá¯áá«áááºáâ áááºáá¯á¶ážáááŸááºáááá·áºáááºá ááá¯á·áá±á¬áºá€áá±á¬ááºážáá«ážááœááºáá»áœááºá¯ááºááá¯á·áááºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá»á¬ážá¡ááŒá±á¬ááºážááŒá±á¬áá±áááºá á€á¡ááá¯ááºážáááºá¡ááá¯ááºáž 7 á¡ááœááºá¡á ááºážááŒáá·áºááŸá¯ááŸá¯á¡ááŒá áºáá¯ááºáá±á¬ááºáááº- "Infrastructure as Code (IaC)" á áá»áœááºá¯ááºááá¯á·á¡ááœááºá á€áááºááŸá¬ á ááºážáááºááŒááºážá¡áá«á¡ááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯áá¯á¶ážááᯠáá¯ááºáá¯á¶á á¶ááŒáá·áº áá±á¬áºááŒáá¬ážáá±á¬ááŒá±á¬áá·áº áááºážááœáẠáá¬ážááŸááºážá áá áºáá»á¬ážááᯠá¡áá¯á¶ážáá»ááá¯ááºááŒá®áž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº á¡ááá¯á¡áá»á±á¬ááºá áá áºáá¯ááºá¡ááœáẠá¡áá¬ážáá°á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážááᯠáááŸááááºááŒá áºáááºá
á¡ááá·áº 7 ááœáẠIaC ááᯠááá¯ááá¯á¡áá±ážá áááºááŒáá·áºááŸá¯áááºááŒá áºáá±á¬áºáááºáž ááá¯á¡áá«ááœáẠáá±áááœááºážááá¯ááŸá±á¬ááºááŸá¯áá áºáá¯áááºáá®ážááŒááºážááŒáá·áº Git ááᯠááŒááºááœááºážááœáẠá áááºá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®ááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááœáẠá¡áá±ážááááºážááá¯ááŸá±á¬ááºáá¯á¶ááᯠááá·áºáá±á¬á¡áá«ááœáẠáá¯ááºáá¯á¶ááŒá®ážááẠáá»á²á·áááá·áºáááºá
áááºááŸá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡ááŒá±á¡áá± áá¯á¶á¥ááá¬
áá±á·áá¬áááºááá·áºááºáá»á¬áž
áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯ááá¯áá¬áá¬áá² git á áááºááŒááºáž - áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á¡ááŒá±á¬ááºáž
á¡áá¬ážáá°áááááá¬áá»á¬áž
svn áá¬áá»á°áá® Microsoft TFS (ááᯠAzure DevOps Services á áá áºá áááºáá áºááá¯ááºážááŒá áºáááº)
3. Containerization (Docker)
áááºážááá¬á¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº
ááááºážá á ááºážáá»ááºážáá»á¬ážááᯠááœááºááááºáá¬á¡ááŒá Ạáááºááá¯á·ááŒá±á¬ááºážáá²áá¬ážáááºááᯠááá¯ááºááŒáááºá áááºá á¯ááŸá áºá¡áááºážáááºá¡ááœááºáž á¡áá»áááºááᯠááŒááºááŒáá·áºááŒáá«á áá¯á·á á¡á²áá®áá¯ááºážá áá°ááœá±áᬠá¡ááá®áá±ážááŸááºážááœá±áááºáááºááá¯á·á¡ááœáẠáá¬áá¬á ááºááœá±ááᯠáááºáá°á¡áá¯á¶ážááŒá¯áá²á·ááŒáá«áááºá ááá¯á·áá±á¬áº ááá á¹á á¡áá»á¬ážá á¯ááœáẠááá¯á¡ááºáá±á¬ startup á¡áááºážá¡ááŒá áºáá»á¬ážááᯠááŒáá¯ááááá«á ááááºá¡áá±ááŒáá·áº áá¯áá¹ááá®áá»á¬ážááẠá á»á±ážááŒá®ážááŒá®áž á¡á áœááºážáááºáá±á¬ áá¬áá¬áá»á¬ážááᯠáááºáá°ááẠááœá±ááŒá±ážáá¯á¶ážá áœá²áá²á·áá±á¬áºáááºáž á¡áá»áá¯á·áá±á¬ á áœááºážáááºáá»á¬ážááᯠáá¯á¶ážáá¡áá¯á¶ážááá»áá²á·áá±á
ááá·áºáá²ááŒá áºá ááºááá±á¬ááºáááºá¡ááá·áºááŸá¬ á¡áá¯á¶ážáááŒá¯áá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážááœáẠááá¯ááºáá¶ááŒá¯ááºážáá®ážááŸá¯ááŒá¿áá¬ááᯠááŒá±ááŸááºážáá±ážááá·áº virtual machines (VMs) ááŒá áºáááºá á€áááºážááá¬ááẠáá°áá®áá±á¬áá¬áá¬á¡ááœááºáž á¡ááá®áá±ážááŸááºážáá áºáá¯ááŸáá·áºáá áºáᯠáá®ážááŒá¬ážá á®áááºáááºá á±ááŒá®áž áá¯á¶ážá áá®ážááŒá¬ážáá±áá¬ááœááºáá»á¬ážááᯠááœá²áá±áá±ážáááºá ááá¯á·áá±á¬áº áá¶ááá±á¬ááºážá áœá¬áá²á áááºááá·áºáááºážááá¬ááœááºáááᯠá¡á¬ážáááºážáá»ááºáá»á¬ážááŸááááºá VM ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠCPUá RAMá ááá¯ááŸá±á¬ááºááŸá¯ááᯠá á¬ážáá¯á¶ážááŒá®áž OS áá±á«áºáá°áááºá ááá¯ááºá ááºáá¯ááºáá»á ááááºááᯠááá·áºááœááºážá ááºážá á¬ážááẠááá¯á¡ááºáá«áááºá á€á¡áá»ááºáá»á¬ážááẠloading speed ááᯠááááá¯ááºá á±ááŒá®áž áááºáá±á¬ááºáááœááºáá°á á±áááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááẠááœááºááááºáá¬ááŒá¯ááŒááºážááá¯á· áá±á¬ááºáá«áááºá áá áºáááºá á€áááºážááá¬ááẠá¡áááºážá¡ááŒá áºá¡áá»á¬ážá¡ááŒá¬ážááᯠááœááºáááºážá á±ááŒá®áž áááºáá±á¬ááºáááœááºáá°á á±ááẠááŒááºáááºááŒá®áž ááá¯ááºáá»á±á¬áá®ááœá±ááŒá áºá á±áá±á¬ ááŒá±ááŸááºážáá»ááºáá±ážááá·áº ááœááºááááºáá¬á¡ááŒáá·áº OS ááᯠá¡áá¯á¶ážáááŒá¯áá±á¬ááŒá±á¬áá·áºá á€áááºážááá¬ááẠááááºááŒá¿áá¬ááᯠááŒá±ááŸááºážáá±ážáá«áááºá
ááŸááºáá«áááºá ááœááºááááºáá¬ááŒá¯áá¯ááºááŒááºážáááºážááá¬ááẠá¡áá áºá¡áááºážááá¯ááºáá±á¬á·áá² 70 ááŸá±á¬ááºážááá¯ááºážááœáẠá áááºááááºáááºáá²á·áááºá á¡á²áá®áá±ááºáá¯ááºážá áá¯áá±ááááœá±á ááá¯ážáááºááŸá¯ááœá±á ááŒáá¯ážá á¬ážááŸá¯ááœá± á¡áá»á¬ážááŒá®ážáá¯ááºáá²á·áááºá áá«áá±ááá·áº Docker á áá®áááºážááá¬ááᯠááá¯ááºáá»á±á¬áá®ááœá±ááŒá áºá¡á±á¬áẠáá¯ááºááŒá®áž áá°á¡áá»á¬ážáá²á· á¡ááœááºááá° áááºááŸááºážáá®ááá¯ááºá¡á±á¬áẠááŒá¯áá¯ááºáá±ážáá²á·áá¬áá«á ááá±á·áá±ááºááœáẠááœááºááááºáá¬áá»á¬ážá¡ááŒá±á¬ááºážááŒá±á¬áá±á¬á¡áá« á¡áá»á¬ážá á¯ááŸá¬ Docker ááá¯ááá¯ááá¯áááºá Docker containers á¡ááŒá±á¬ááºážááŒá±á¬áá²á·á¡áá«á Linux containers ááá¯ááá¯ááá¯áá¬áá«á ááœááºááááºáá¬áá»á¬ážááá¯áááºáááºáááºá¡ááœáẠWindows ááŸáá·áº macOS á áá áºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬áºáááºáž á€á¡ááŒá±á¡áá±ááœáẠáá±á¬ááºáááºá¡ááœáŸá¬áá áºáá¯áá±á«áºáá¬ááŒá±á¬ááºáž áá¬ážáááºáááºá¡áá±ážááŒá®ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá Mac ááŸá Docker ááẠáá±á«á·áá«ážáá±á¬ Linux VM á¡ááœááºážááŸá ááœááºááááºáá¬áá»á¬ážááᯠááááºáááááºáá¯ááºáá±á¬ááºáááºá ááœááºááááºáá¬áá»á¬ážá¡ááœááºáž Android emulator áá»á¬ážá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááŒá±á¬ááºáž ááœá±ážááœá±ážááá·áºá¡áá« á€áá±á«ááºážá ááºááá¯á· ááŒááºááœá¬ážáá«áááºá ááá¯á·ááŒá±á¬áá·áº á€áá±áá¬ááœáẠá¡áá±ážá áááºááœá±ážááœá±ážááẠááá¯á¡ááºáá±á¬ á¡ááœááºá¡áá±ážááŒá®ážáá±á¬ ááœá²ááœá²áá»ááºáá áºáá¯ááŸááá«áááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
ááœááºááááºáá¬ááŒá¯áá¯ááºááŒááºážááŸáá·áº Docker ááẠá¡á±ážááŒááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· ááœá±á·ááŸááá²á·áááºá áááááᬠááá¯á·ááá¯áẠáááºážááá¬ááá¯ááºážááẠááŒá¿áá¬áá áºáá¯ááᯠááŒá±ááŸááºážááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážá áááºá ááºáá¯á¶ááᯠááŒáá·áºááŒáá«á áá¯á·á UI á ááºážáááºááŸá¯áá»á¬ážá áááºá ááºááŸá¯ááœáẠá ááºážáááºááŸá¯ á¡ááá¯á¡áá»á±á¬ááºá áá áºá áááá¬áááºááŸá¬ážáá±á¬ ááŒá¿áá¬áá»á¬ážááᯠá¡ááŒááºážáá»ááºážáá±á¬áºááŒááŒáá«á áá¯á·á
- Selenium ááŸáá·áº á¡áá°ážáááŒáá·áº Appium ááᯠáááºáááºááá·áºá¡áá« ááŸá®ááá¯ááŸá¯á¡áá»á¬ážá¡ááŒá¬ážá
- ááá±á¬ááºáá¬áá»á¬ážá Simulators ááŸáá·áº drivers áá»á¬ážá áá¬ážááŸááºážáá»á¬ážá¡ááŒá¬áž ááá¯ááºáááºáá®ááŸá¯ ááŒá¿áá¬áá»á¬ážá
- áá»ááºážááŒáá¯ááºáááºáááºááŒááºážá¡ááœáẠá¡áá°ážá¡áá±ážááŒá®ážááá·áº ááá±á¬ááºáá¬/áááºáá°áá±ážáá¬áá»á¬ážá¡ááœáẠáá®ážááŒá¬ážáá±áá¬áááŸáááŒááºážá
- ááá±á¬ááºáᬠ10á 50á 100 ááá¯á·ááá¯áẠ1000 ááᯠáá áºááŒáá¯ááºáááºáááºáž áá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá«á á á®áá¶ááá·áºááœá²ááááºážááááºážááẠáááºáá²áááºá
Selenium ááẠáá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶áž automation tool ááŒá áºááŒá®áž Docker ááẠáá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶áž containerization tool ááŒá áºáá±á¬ááŒá±á¬áá·áºá á¡áááºáá±á¬áºááŒáá« ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážááẠá¡á áœááºážáááºáá±á¬ tool áá áºáá¯áááºáá®ážááẠáá áºá á¯á¶áá áºáŠážá០áááºážááá¯á·ááᯠáá±á«ááºážá ááºááẠááŒáá¯ážá á¬ážáá²á·ááŒááºážááŸá¬ á¡á¶á·ááŒá áá¬ááá¯ááºáá«á á€áá²á·ááá¯á·áá±á¬ ááŒá±ááŸááºážáá»ááºáá»á¬ážááᯠááá¯ááá¯á¡áá±ážá ááẠáá¯á¶ážáááºááŒáá·áºááŒáá«á áá¯á·á
docker ááŸá áá®áá®áá®áááºááá áº
á€áááááá¬ááẠá ááºáá»á¬ážá áœá¬ááœáẠááá±á¬ááºáá¬áá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºáááºááŸáá·áº áááá¯á¡áá»ááºá¡áá»á¬á០á á®áá¶ááá·áºááœá²áááºá¡ááœáẠáá®áá®áá®áááºááá¹áá¬ááœáẠáá±áááºážá¡á á¬ážáá¯á¶ážááŒá áºáááºá á áááºáááºá¡ááœáẠáááºááẠá¡áááºážáá¯á¶áž á¡á áááºá¡ááá¯ááºáž 2 áá¯ááᯠá á¬áááºážááœááºážááẠááá¯á¡ááºáááº- Hub ááŸáá·áº Node(áá»á¬áž)á Hub ááẠá ááºážáááºááŸá¯áá»á¬ážá០áá±á¬ááºážááá¯áá»ááºá¡á¬ážáá¯á¶ážááᯠáááºáá¶áááŸáááŒá®áž ááá·áºáá»á±á¬áºáá±á¬ Nodes áá»á¬ážááá¯á· ááŒáá·áºáá±áá±ážááá·áº áááᯠNode áá áºáá¯ááŒá áºáááºá Node áá áºáá¯á á®á¡ááœááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠááá¯áá»ááºáá±á¬ browser ááŸáá·áº áááºážááá¬ážááŸááºážááᯠáááºááŸááºááŒááºážááŒáá·áº áá®ážááŒá¬áž configure ááᯠconfigure áá¯ááºááá¯ááºáá«áááºá ááá¯á·áá±á¬áºá áá»áœááºá¯ááºááá¯á·ááẠááœá²áááºáá¯á¶ážááá¯ááºáá±á¬ ááá±á¬ááºáá¬áááá¯ááºáá¬áá»á¬ážááᯠááá¯ááºááá¯ááºááá¯á áá¯ááºááŒá®áž áááºážááá¯á·ááᯠá¡ááá¯ááŸááá±á¬ Nodes ááœáẠááá·áºááœááºážááẠááá¯á¡ááºáá±áá±ážáááºá á€á¡ááŒá±á¬ááºážááŒá±á¬áá·áºá Linux OS ááœáẠááá·áºááœááºážááááá±á¬ ááá±á¬ááºáá¬áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºááẠááá¯á¡ááºááá·áºá¡áá«ááŸááœá²á Selenium grid ááᯠáááºážá ááá·áºá ááºáá±á¬áá¯á¶á á¶ááŒáá·áº á¡áá¯á¶ážáááŒá¯áá«á á¡ááŒá¬ážááá á¹á áááºá¡á¬ážáá¯á¶ážá¡ááœááºá áááááá¬áá¬ááŒá±á¬ááºážááœááºááŒááºááœááºááŸáááŒá®áž ááŸááºáááºáá±á¬ááŒá±ááŸááºážáá»ááºááŸá¬ Selenium grid Hub ááŸáá·áº Nodes áá»á¬ážááá¯áááºáááºáááºá¡ááœáẠDocker áá¯á¶áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá á€áá»ááºážáááºááŸá¯ááẠnode á á®áá¶ááá·áºááœá²ááŸá¯ááᯠáá»á¬ážá áœá¬ááá¯ážááŸááºážá á±áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠááá·áºááœááºážááŒá®ážáá±á¬ ááá±á¬ááºáá¬áá»á¬ážááŸáá·áº áááá¯ááºáá¬áá»á¬ážá ááœá²áááºáá¬ážááŸááºážáá»á¬ážááŒáá·áº ááá¯á¡ááºáá±á¬áá¯á¶ááᯠááœá±ážáá»ááºááá¯ááºáá«áááºá
áááºááŒáááºááŸá¯ááŸáá·áº áááºáááºá á¡ááá¯ážááŒááºáá¯á¶ážáááºááŸá¯áá»á¬ážááŸááá±á¬áºáááºážá á¡áá°ážáááŒáá·áº Nodes á¡áá»á¬ážá¡ááŒá¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááá·áºá¡áá«á Selenium grid ááẠSelenium á ááºážáááºááŸá¯áá»á¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠáá±áááºážá¡á á¬ážáá¯á¶ážáááááá¬á¡ááŒá ẠááŸááá±áá²ááŒá áºáááºá á€áááááá¬á á¡áá»áá¯ážáá»áá¯ážáá±á¬ ááá¯ážáááºááŸá¯áá»á¬ážááŸáá·áº ááŒá¯ááŒááºááœááºážáá¶ááŸá¯áá»á¬ážááẠááááºááá¯á·ááŸá¯á¡áá»áá¯ážáá»áá¯ážááᯠááá¯ááºáá»ááºáá±ážááá·áº open-source ááœáẠá¡áááºáááŒááºáá±á«áºáá¬áááºááᯠáááááŒá¯ááááẠá¡áá±ážááŒá®ážáá«áááºá
áááºá¡ááœáẠSelenoid
á€áááááá¬ááẠáá±áá¹áá¬á¡ááœááºážá០áá»ááºáá»ááºážá¡áá¯ááºáá¯ááºáá±á¬ááŒá±á¬áá·áº Selenium ááá±á¬áááœáẠá¡á±á¬ááºááŒááºááŸá¯áá áºáá¯ááŒá áºááŒá®áž automation á¡ááºáá»ááºáá®áá¬áá»á¬ážá áœá¬áááááᯠááá¯ááá¯ááœááºáá°á á±áááºá ááááŠážá áœá¬á áááºážááẠSelenium grid ááá±á¬ááºáááºááœááºážáá¶ááŸá¯ááá¯ááºáá«á áááºážá¡á á¬ážá áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬áá»á¬ážááẠááá±á¬ááºáá¬á¡áá»áá¯ážáá»áá¯ážá¡ááœáẠáá±á«á·áá«ážáá±á¬ Docker áá¯á¶áá»á¬ážááŸáá·áº áá±á«ááºážá ááºáá¬ážáá±á¬ Selenium Hub á áá¯á¶ážááá¬ážááŸááºážá¡áá áºááᯠGolang ááœáẠáááºáá®ážáá²á·ááŒá®áž á ááºážáááºááŸá¯á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŸá¯ááᯠááœááºážá¡á¬ážáá±ážáá²á·áááºá ááá¯á·á¡ááŒááºá Selenium Grid áá¡ááŒá±á¡áá±ááœááºá áá»áœááºá¯ááºááá¯á·ááẠbrowser áá áºáá¯áááºážááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá«ááœááºááŒá¿áá¬ááá¯ááºááá·áºá¡áá¬á¡á¬ážáá¯á¶ážá¡ááœááºááá¯á¡ááºáá±á¬ááá±á¬ááºáá¬áá»á¬ážááŸáá·áºáááºážááá¯á·ááá¬ážááŸááºážáá»á¬ážááá¯ááŒáá¯áááºáá¯á¶ážááŒááºááááºááŒá áºáááºá ááá¯á·áá±á¬áº áá¶á·ááá¯ážáá±ážáá¬ážááá·áº ááá±á¬ááºáá¬áá»á¬ážá áœá¬ááŸáá·áº áááºáááºáá¬áá±á¬á¡áá« Selenoid ááẠáááºážá 'áááºááá¯á¡á¬ážááŸáááá±á¬ááºáá¬' á¡ááºá¹áá«áááºááŒá±á¬áá·áº áá¶áá«ááºáá áºááŒá±ááŸááºážáá»ááºááŒá áºáááºá áá»áœááºá¯ááºááá¯á·á¡ááœáẠááá¯á¡ááºáááºááŸá¬ ááá±á¬ááºáá¬áá»á¬ážááŸáá·áº ááá¯á¡ááºáá±á¬ áá¯á¶áá»á¬ážááᯠááŒáá¯áááºáá±á«ááºážáá¯ááºáá¯ááºáááºááŸáá·áº Selenoid á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááá·áº ááœá²á·á ááºážááŸá¯ááá¯ááºááᯠá¡ááºááááºáá¯ááºáááºááŒá áºáááºá Selenoid ááẠá ááºážáááºááŸá¯áá»á¬ážá០áá±á¬ááºážááá¯áá»ááºááᯠáááºáá¶áááŸáááŒá®ážáá±á¬ááºá áááºážááẠá¡ááá¯ááŸááá±á¬ ááœááºááááºáá¬ááᯠá¡ááá¯á¡áá»á±á¬áẠááá±á¬ááºáá¬ááŒáá·áº ááœáá·áºáá±ážáááºááŒá áºáááºá á ááºážáááºááŸá¯ááŒá®ážááœá¬ážáá±á¬á¡áá«á Selenoid ááẠááœááºááááºáá¬ááᯠá¡áá¬ážáá±ážáááºááŒá áºááŒá®áž á¡áá¬áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááŸá¬ážáá±ážáááºááŒá áºáááºá á€áá»ááºážáááºááŸá¯ááẠSelenium grid ááœáẠáá»áœááºá¯ááºááá¯á·áááŒá¬ááááŒá¯á¶ááœá±á·ááá±á¬ 'node degradation' á áá¬áááºááŒá®ážááŒá¿áá¬ááᯠáá¯á¶ážááááºááŸá¬ážáá±ážáá«áááºá
ááŒá áºáá»ááºáá±á¬á· Selenoid áᬠááœá±áá»ááºáááºááá¯ááºáá±ážáá«áá°ážá áá»áœááºá¯ááºááá¯á·ááœáẠ'áááºááá¯á¡á¬ážááŸáááá±á¬ááºáá¬' á¡ááºá¹áá«áááºááᯠáááŸááá¬ážáá±á¬áºáááºáž 'áááºááá¯á¡á¬ážááŸáá¡áááºážá¡ááŒá áºáá»á¬áž' á¡ááºá¹áá«áááºááᯠááááŸáááá¯ááºáá±ážáá«á Selenoid ááá¯á¡áá¯á¶ážááŒá¯áááºá áááºážááᯠáá¯ááºááá¯ááºážááá¯ááºáᬠáá¬á·ááºáá² ááá¯á·ááá¯áẠVM ááœáẠá¡áá¯á¶ážáá»ááááºááŒá áºááŒá®áž ááá¯ááá¯áááºááŸá¬ á¡áááºážá¡ááŒá áºáááºáá»áŸááœá²áá±ááẠááá¯á¡ááºáááºááᯠááŒáá¯áááºááááŸááá¬ážááááºááŒá áºáááºá áá»ááºážááŒáá¯áẠ10á 20 ááá¯á·ááá¯áẠ30 ááá±á¬ááºáá¬áá»á¬ážááá¯ááẠáá¯ááºáá±á¬ááºááá·áº á¡áá±ážá á¬ážááá±á¬áá»ááºáá»á¬ážá¡ááœáẠááŒá¿áá¬ááá¯ááºáᯠáá»áœááºáá±á¬áºáááºáá«áááºá áá«áá±ááá·áº áá»áœááºáá±á¬áºááá¯á· 100, 500, 1000 áá²á· áá®áááºááá¯ááá¯á¡ááºááẠáááºááá¯áá¯ááºááá²á á€áá»áŸáá±á¬ááºáá»á¬ážá áœá¬áá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá áºáá»áááºáá¯á¶áž ááááºážááááºážááŒá®áž áá±ážáá±á¬ááºáááºááŸá¬ á¡áááá¹áá«ááºáááŸááá±á á€áá±á¬ááºážáá«ážá á¡ááá¯ááºáž 5 ááŸáá·áº 6 ááœááºá áá¯áá¹ááá®áá¯ááºáá»á ááááºáá»á¬ážááᯠáááááá¬áá¬áá»áŸá±á¬á·áá»ááŒááºážááŒáá·áº ááá·áºá¡á¬áž á áá±ážáá»ááá¯ááºá á±ááá·áº ááŒá±ááŸááºážáááºážáá»á¬ážááᯠááœá±ážááœá±ážáá«áááºá
Android á¡ááœáẠSelenoid
Selenoid ááᯠáááºá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážáááááá¬á¡ááŒá Ạá¡á±á¬ááºááŒááºááŒá®ážáá±á¬ááºá áá°ááœá±á Android á¡ááœáẠá¡áá¬ážáá°áá áºáá¯áá¯ááᯠááá¯áá»ááºááŒáá«áááºá ááŒá áºáá»ááºáá²á·ááẠ- Selenoid ááᯠAndroid áá¶á·ááá¯ážááŸá¯ááŒáá·áº áá¯ááºáá±áá²á·áááºá á¡ááá·áºááŒáá·áºáá¬ážáá±á¬á¡áá¯á¶ážááŒá¯áá°á¡ááŒááºá¡áá áá¯ááºáá±á¬ááºááŸá¯áááá¬áááẠáááºá¡ááá¯á¡áá»á±á¬ááºá áá áºááŸáá·áº áááºáá°áááºá áá áºáá¯áááºážáá±á¬ ááœá¬ááŒá¬ážáá»ááºááŸá¬ ááá±á¬ááºáá¬ááœááºááááºáá¬áá»á¬ážá¡á á¬áž Selenoid ááẠAndroid emulator ááœááºááááºáá¬áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá áá»áœááºá¯ááºáá¡ááŒááºá¡áá áááºážááẠáááºááŸáááœáẠAndroid á ááºážáááºááŸá¯áá»á¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠá¡á áœááºážáááºáá¯á¶áž á¡ááá²á·áááááá¬ááŒá áºáááºá
áá®áááááá¬áá²á· á¡áá»ááºááá±á¬áá±á¬ááºáá²á· ááŸá¯áá±á¬áá·áºááœá±á¡ááŒá±á¬ááºáž áá«áááẠáááŒáá¯ááºáá°áž ááá¯áá±á¬á·á ááá¯á·áá±á¬áºáááºážá web automation ááŸáá·áº áááºááá¯ááºááŒá®áž scaling ááŸáá·áº áááºá ááºáá±áá±á¬ áá°áá®áá±á¬ á¡á¬ážáááºážáá»ááºáá»á¬áž ááŸááá±áá«áááºá áááºážá¡ááŒááºá áá»áœááºá¯ááºááá¯á·ááẠtool ááá¯ááááá¯á¶ážá¡ááŒáááºá áááºáááºáááºáá«áá¡á¶á·á¡á¬ážááá·áºá áá¬ááŒá áºáá¬ááá¯ááºááá·áºáá±á¬ááºáááºááá·áºáááºáá»ááºáá áºáá¯á¡ááŒá±á¬ááºážááŒá±á¬áááºááá¯áááºá Android áá¯ááºáá¯á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠnested virtualization áá¶á·ááá¯ážááŸá¯ááŒáá·áº áá¯ááºááá¯ááºážááá¯ááºáá¬á áẠááá¯á·ááá¯áẠVM ááá¯á¡ááºáá«áááºá áá¯ááºáááºážáááºážááœáŸááºááœááºá á€á¡áá¬ááᯠLinux VM ááœáẠáááºááá¯á·ááœáá·áºááááºááᯠááá¯ááºááŒáá«áááºá ááá¯á·áá±á¬áº áááºááẠmacOS á¡áá¯á¶ážááŒá¯áá°áá áºáŠážááŒá áºááŒá®áž Selenoid ááᯠá ááºááœááºážááœáẠá¡áá¯á¶ážááŒá¯ááá¯áá«áá áááºážááẠAndroid á ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠáááŒá áºááá¯ááºáá«á ááá¯á·áá±á¬áº áááºááẠ'nested virtualisation' ááᯠconfigure áá¯ááºáá¬ážááŒá®áž Selenoid á¡ááœááºážááœáẠááŒáá·áºáá»ááºáá¬ážááŒááºážááŒáá·áº áááºá ááºááœááºážááŸá Linux VM ááᯠá¡ááŒá²áááºážáá¯ááºáá±á¬ááºááá¯ááºáááºá
áááºááŸá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡ááŒá±á¡áá± áá¯á¶á¥ááá¬
á€áá±á¬ááºážáá«ážáá¡ááŒá±á¡áá±ááœááºá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááá¯ááºáá±á¬áºááẠáááááᬠá áá¯ááᯠááá·áºáá«áááºá áááºážááá¯á·ááẠáááºá ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠSelenium grid ááŸáá·áº Android á ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠSelenoid ááŒá áºáááºá GitHub áááºáááºážá á¬ááœáẠáááºá ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠSelenoid ááᯠá¡áá¯á¶ážááŒá¯áááºážááá¯áááºáž áááºááŒáá«áááºá
áá±á·áá¬áááºááá·áºááºáá»á¬áž
Docker: ááœááºááááºáá¬ááá¯áᬠáá¬áá²á Docker: á áááºááá¯ááºáá«á 5 Container Alternatives to Docker áááºáá®áá®ááẠGrid áááºáá®áá®ááẠdocker áá®áá®ááœáá¯áẠSelenoid Github Android emulators á¡ááœáẠKVM á áá áºááá·áºááœááºážááŒááºážá Docker Deep Dive á á¬á¡á¯ááº
á¡áá¬ážáá°áááááá¬áá»á¬áž
- á¡ááŒá¬áž containerization tools ááœá±ááŸááá«áááºá áá«áá±ááá·áº Docker ááá±á¬á· áá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶ážáá«á á¡ááŒá¬ážáá áºáá¯áá¯ááᯠá ááºážááŒáá·áºááá¯áá«áá Selenium á ááºážáááºááŸá¯áá»á¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á· áá±ážáá±á¬ááºáá¬ážáá±á¬ áááááá¬áá»á¬ážááẠááœááºáááºá០á¡áá¯ááºáááŒá áºááŒá±á¬ááºáž ááŸááºáá¬ážáá¬ážáá«á
- ááá¯áá²á·ááá·áºá¡ááá¯ááºážá á¥ááá¬á Selenium grid á ááŒá¯ááŒááºááœááºážáá¶ááŸá¯áá»á¬ážá
ááá®áá®ááẠ.
4.CI/CD
áááºážááá¬á¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº
á ááºáááºáááŒááºáá±á«ááºážá ááºážááŒááºážá¡áá±á·á¡áá»áá·áºááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠá¡áá±á¬áºáá±ážáá±áááºážá á¬ážááŒá®áž áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á áá áºáá»á¬ážááŸáá·áº áááºážáá°ááŒá áºáááºá áá«áá±á¬ááºá០áá±á«áá¬á á¡áá¯á¶ážá¡ááŸá¯ááºážááœá± ááŸá¯ááºááœá±ážáá±áááºááá¯á· áá¶á á¬ážááááºá á€á á¬ááá¯ááºááœáẠáá»áœááºá¯ááºáá¡ááŒááºááŒáá·áº á€áááºážááá¬á ááŒá¯ááŒááºááœááºážáá¶ááŸá¯ á áá¯ááᯠáá±á¬áºááŒááá¯áá«áááºá á¡ááºáá¬áááºáá±á«áºááœáẠááá°áá®áá±á¬ á¡áááá¹áá¬ááºááœáá·áºááá¯áá»ááºáá»á¬ážáá«áá±á¬ áá±á¬ááºážáá«ážáá»á¬ážá áœá¬ááᯠáááºááœá±á·ááá¯ááºáááºááŒá áºááŒá®áž ááá·áºáááºááŒááºáá»áẠááœá²ááŒá¬ážáá«á áá¯á¶ážááá¯á¶ááŸááºááŒá áºáááºá á¡áá±ážá¡ááŒá®ážáá¯á¶ážááá±á¬á· áááºáᬠááá·áºáá¯ááºáá±á¬áºááá¯ááºáááºááœá±áá²á· áá áºáá»ááºááŸá¬áááºážááŸáááá¯á·áá«áá²á
ááá¯á·ááŒá±á¬áá·áºá CI - Continuous Integrationá CD - Continuous Delivery ááŸáá·áº CD - Continuous Deployment áá°áá±á¬ áá±á«áá¬á á áá¯ááŸááááºá (á¡á±á¬ááºááœáẠá€á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠá¡ááºá¹áááááºááᯠáá¯á¶ážáá«áááºá) ááŒá¯ááŒááºááœááºážáá¶ááŸá¯áá áºáá¯á á®ááẠááá·áºááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááá¯ááºááá¯ááºážááá¯á· áá±á¬ááºáááºá¡ááá·áºáá»á¬ážá áœá¬ááᯠáá±á«ááºážááá·áºáááºá ááŸá¯ááºááááºáá±á¬áº áááºáááºáá±áá±á¬ (á ááºáááºáááŒááº) ááẠá¡áá±ážááŒá®ážáá¯á¶ážááŒá áºáááºá á€á¡ááŒá±á¡áá±ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááŸá±á¬áá·áºá¡ááŸáẠááá¯á·ááá¯áẠáá°ááá¯ááºááá¯áẠáááºáá±á¬ááºá áœááºáááºááŒááºážáááŸááá² á¡á ááŸá¡áá¯á¶áž ááŒá áºáá»ááºáá±ááá·áºá¡áá¬ááᯠááá¯ááá¯áááºá á€á¡ááŒá±á¬ááºážá¡áá¬ááœáẠCI & CD ááŸáá·áº CD ááá¯ááŒáá·áºááŒáá«á áá¯á·á
- á ááºáááºáááŒáẠáá±á«ááºážá ááºážááŸá¯ áá«á ááá·áºáá²ááŒá áºá ááºáá²á· áááŠážááŒá±ááŸááºážáá«á áá¯ááºá¡áá áºááᯠáá¬áá¬ááá¯á· áá±ážááá¯á·ááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·áááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááẠá¡áááºááŒá±ááŒá±á¬ááºáž á¡ááŒááºáá¯á¶á·ááŒááºáá»ááºáááŸáááẠáá»áŸá±á¬áºááá·áºáá«áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá CI ááœáẠstatic code ááœá²ááŒááºážá áááºááŒá¬ááŒááºážáááááá¬áá»á¬ážááŸáá·áº áá°áá áº/á¡ááœááºážááá¯ááºáž API á ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáá±áá«áááºá áááºážááẠáá»áœááºá¯ááºááá¯á·ááá¯ááºá¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºáá»á¬ážááᯠá áá¹ááá·áºá¡áááºážáááº/áááá áºá¡ááœááºáž ááá°ááá¯ááºá á±áá«áááºá
- á ááºáááºáááŒááºáá±ážááá¯á· áá»áœááºá¯ááºááá¯á·ááẠáá±á«ááºážá ááºážááŒááºáž/UI á ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áº ááá¯ááá¯á¡ááá·áºááŒáá·áºáá±á¬ á¡ááá·áºáá áºáá¯ááŒá áºáááºá ááá¯á·áá±á¬áº á€á¡ááá·áºááœáẠáá»áœááºá¯ááºááá¯á·ááẠCI ááŒáá·áº ááááºáá»á¬ážááᯠáá»ááºááŒááºá áœá¬ ááááŸááá«á áááá á€á á áºáá±ážááŸá¯á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááẠááŒá®ážááŒá±á¬ááºááẠá¡áá»áááºááá¯ááŒá¬áááºá áá¯áááá¡áá±ááŒáá·áºá á áááºááŒááºážáááŒá¯áá®á áá»áœááºá¯ááºááá¯á·áááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá ááºážáááºááŸá¯/áá¬ááºáá¯á¶áááºáááºážáá»ááºááœáẠá¡áá¯á¶ážááŒá¯ááá«áááºá ááá¯á·á¡ááŒááºá áá»áœááºá¯ááºááá¯á·ááẠááá¯ááá¯ááºážááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááŒá±á¬ááºáž ááŒá±á¬áá±áá»áŸáẠáá»áœááºá¯ááºááá¯á·á á¡ááá®áá±ážááŸááºážáááºáá±á¬ááºááŸá¯ááᯠáááºáá®ážááẠáá±á¬ááºáááºááŒá±ááŸááºážáá áºáᯠáá±á«áºáá¬áá«áááºá
- á ááºáááºáááŒááºááŒáá·áºáá»áẠááááºá¡ááá·áºáá»á¬ážááœáẠáááºáá¶ááŸá¯á ááºážáááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡á±á¬ááºááŒááºááŒá®ážáá«á áá»áœááºá¯ááºááá¯á·á áá¯ááºáá¯ááºááŸá¯ááá¯ááºáᬠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáá¯ááºááŒááºáááºáᯠáá°ááá«áááºá áááºážá¡ááŒááºá ááœááºááŸáááá·áºá¡ááá·áºááŒá®ážáá±á¬ááºá áá¯ááºáá¯ááºááŸá¯ááœáẠáá®ážááá¯ážá ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºááŒááºážááŸáá·áº á áááºáááºá á¬ážááŸá¯áááºááá áºáá»á¬áž á á¯áá±á¬ááºážááŒááºážáá²á·ááá¯á·áá±á¬ á¡ááá·áºá¡áá»áá¯ážáá»áá¯ážááᯠáááºáááºááŸááºááá¯ááºáááºá á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážááŒáá·áº áá±á¬ááºážááœááºáá±á¬ ááœáŸááºážááŒá¯á¶ááŸá¯ááŒáá·áºáᬠá ááºáááºáááŒáẠááŒáá·áºáá»ááºáá¯ááºáá±á¬ááºááá¯ááºáááºá á ááºážáááºááŒááºážá¡áá«á¡ááẠááá¯ááºááá¯ááºáááºáá±á¬ááºá áœááºáááºááŸá¯áá»á¬áž ááá¯á¡ááºáá«áá áááºážááẠáááŸááá±á¬á·áá«á áááºáááºáá±áá±á¬ (á ááºáááºáááŒááº)á ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·á ááá¯ááºááá¯ááºážááẠá ááºáááºáááŒáẠáá±ážááá¯á·ááŒááºážá á¡áá±á·á¡áááŸáá·áºáᬠááá¯ááºáá®áááºáᯠááá¯ááá¯ááºáá«áááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
á€ááá¹áááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá¯á¶ážááŸá¡áá¯á¶áž UI á ááºážáááºááŸá¯áá»á¬ážá¡ááŒá±á¬ááºáž ááŒá±á¬ááá¯áá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠáááºáááºážáá»ááºááᯠá ááºážáááºáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·áááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááŸáá·áº áááºá ááºáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážáá»ááá·áºáááºáᯠááŸááºážáááºážááá·áºáááºá á ááºáááºáááŒáẠáá±á«ááºážá ááºážááŒááºáž - á€áá¯ááºáááºážá á¥áºááẠá€áá¯ááºáááºážá¡ááœáẠá¡áá»á¯á¶ážáááºáááºááá¯ááºáá«á á¡áááºážáá¯á¶áž á ááºáááºáááŒáẠáá±ážááá¯á·ááá·áº á¡áá±á·á¡áá»áá·áºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá»áœááºá¯ááºááá¯á· ááá¯á áá¯ááºááá«áááºá áá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·ááᯠáá¯ááºáá¯ááºáá±ážááœáẠáá¯ááºáá±á¬ááºáááºááá¯áá«á á ááºáááºáááŒáẠááŒáá·áºáá»ááºááŒááºážáááºáááºáž UI á ááºážáááºááŸá¯áá»á¬ážá á¡áááá¹áá«ááºááŒá áºáááºá
áááá¯áá¬áááºáá¬ááŒá±á¬ááºážáá²ááŸá¯áá²á· ááá¯ááºáá±á¬áºáá¯á¶ááᯠáááŒáá·áºáááºááŸá¬ GitLab CI áá²á· áááºáááºááŒá®áž á áá¬ážá¡áááºážááẠááŒá±á¬áá»ááºáá«áááºá á¡ááŒá¬áž CI/CD áááááá¬áá»á¬ážááŸáá·áº ááá°áá²á GitLab ááẠá¡áá±ážááááºáž ááá¯ááŸá±á¬ááºáá¯á¶ááŸáá·áº á¡ááŒá¬ážáá±á¬ á¡ááá¯áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áœá¬ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá ááá¯á·ááŒá±á¬áá·áº GitLab ááẠCI áááºááá¯áááºá áááºážááœáẠá¡áááºážá¡ááŒá áºáá¯áẠá á®áá¶ááá·áºááœá²ááŸá¯á áá»ááºááŒááºáá±á¬ á á®áá¶ááá·áºááœá²ááŸá¯á CI/CD ááá¯ááºááá¯ááºážáá»á¬ážá ááŸááºáááºážáááááá¬áá»á¬ážááŸáá·áº ááá¯ááºážáá¬áá»ááºáá»á¬áž á á¯á ááºážááŸá¯ááá¯á· áá«áááºáá«áááºá GitLab áááºáá±á¬ááºáá¯á¶ááœáẠGitlab CI/CD ááŸáá·áº GitLab Runner ááá¯á· áá«áááºáááºá á€áááºááŸá¬ ááá¬ážááẠáááºááá¯ááºá០á¡ááá¯áá»á¯á¶ážáá±á¬áºááŒáá»ááºááŒá áºáá«áááºá
Gitlab CI/CD ááẠáááºážá á¡ááŒá±á¡áá±ááᯠáá±áá¬áá±á·á áºáá áºáá¯ááœáẠááááºážáááºážáá¬á ááá±á¬áá»ááºáá»á¬áž/áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá á®áá¶ááá·áºááœá²áᬠá¡áá¯á¶ážááŒá¯áá°áá»ááºááŸá¬ááŒááºááᯠáá¶á·ááá¯ážáá±ážááá·áº API áá áºáá¯áá«ááŸááá±á¬ áááºá¡ááá®áá±ážááŸááºážáá áºáá¯ááŒá áºáááºá GitLab Runner ááẠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáá±ážááá·áº application áá áºáá¯ááŒá áºáááºá áááºážááᯠáá®ážááŒá¬ážá á®á¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž API áá áºáá¯ááŸáá áºááá·áº GitLab CI/CD ááŸáá·áº á¡áá¯ááºáá¯ááºááá¯ááºáááºá á ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáááºá¡ááœáẠáááºááẠGitlab instance ááŸáá·áº Runner ááŸá áºáá¯á áá¯á¶áž ááá¯á¡ááºáá«áááºá
áááºááŸá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡ááŒá±á¡áá± áá¯á¶á¥ááá¬
áá±á·áá¬áááºááá·áºááºáá»á¬áž
Martin Fowler- á ááºáááºáááŒáẠáá±á«ááºážá ááºážááŸá¯ GitLab CI/CD Continuous Integration á á¬á¡á¯áẠá ááºáááºáááŒááºáá±ážááá¯á·áá±á¬á á¬á¡á¯ááº
á¡áá¬ážáá°áááááá¬áá»á¬áž
5. ááááºááá¯ááºááááºáá±á¬ááºážáá»á¬áž
áááºážááá¬á¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº
á€ááá¹áááœáẠ'public clouds' áá¯áá±á«áºáá±á¬ áá±áááºážá á¬ážáá±á¬ áááºážááŒá±á¬ááºážáá áºáá¯á¡ááŒá±á¬ááºáž ááœá±ážááœá±ážáá«áááºá á¡áááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ virtualization ááŸáá·áº containerization áááºážááá¬áá»á¬ážááẠááŒá®ážáá¬ážáá±á¬á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážááŸááá±áá±á¬áºáááºážá áá»áœááºá¯ááºááá¯á·ááẠááœááºáá»á°áá¬ááá¯ááºáá¬á¡áááºážá¡ááŒá áºáá»á¬áž ááá¯á¡ááºáá±áá±ážáááºá áá¯áá¹ááá®áá»á¬ážááẠá á»á±ážááŒá®ážáá±á¬ áá¬áá¬áá»á¬ážááᯠáááºáá°ááẠááá¯á·ááá¯áẠáá±áá¬á ááºáá¬áá»á¬ážááᯠááŸá¬ážááŒáááºá ááá¯á·áá±á¬áº á€ááá á¹á ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·ááᯠ24/7 ááŸáá·áº áááºááá·áºáááºááœááºáá»ááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºááŒá áºá á± áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºááá·áº á¡áááºážá¡ááŒá áºáááºáá»áŸááᯠ(áá áºáá«ááᶠáááºááœá±á·ááá»áá±á¬) ááœááºáá»ááºááŸá¯áá»á¬ážááŒá¯áá¯ááºááẠááá¯á¡ááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá¯ááºáá¯ááºááŸá¯ááẠXNUMX/XNUMX áááºáááºáá±áá±á¬ áá¬áá¬áá áºáᯠááá¯á¡ááºáá±á¬áºáááºáž á¡áá¯ááºáá»áááºááŒááºáááœáẠá ááºážáááºáááºá¡ááœáẠá¡áá¬ážáá°á¡áááºážá¡ááŒá áºáá»á¬áž ááá¯á¡ááºáá«ááá¬ážá áááºážááẠá ááºážáááºááŸá¯ á¡áá»áá¯ážá¡á á¬ážáá±á«áºááœááºáááºáž áá°áááºáá«áááºá á¥ááá¬áá áºáá¯ááẠáá±á¬ááºáá±á·ááœáẠááááºáá»á¬ážáááŸááááºá¡ááœáẠá¡áá¯ááºááá¯ááºááá·áºá¡áá»áááºá¡ááœááºáž áá¯ááºáá±á¬ááºááẠá á®á ááºáá¬ážááá·áº áááº/á áááºááá á®ážááŸá¯ááá¯ááºáᬠá ááºážáááºááŸá¯áá»á¬ážááŒá áºáááºá ááá¯á·áá±á¬áº á¡áá¯á¶ážááŸá¡áá¯á¶áž á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠXNUMX/XNUMX áá¬áá¬áááŸáááá¯ááºááŸá¯ááẠáááá¯á¡ááºáá² á¡áá°ážáááŒáá·áº áááºá áœá²á ááºážáááºááŸá¯áááºáááºážáá»ááºáá»á¬ážá¡ááœáẠáááá¯á¡ááºáá«á ááá¯ááá¯á·áá±á¬á¡ááŒá±á¡áá±áá»á¬ážá¡ááœááºá ááá¯á¡ááºááá±á¬áẠá¡áááºážá¡ááŒá áºáá»á¬ážá áœá¬ááᯠááá°áááºá áááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯áááºááŸáá·áº áááºážááá¯á·áááá¯á¡ááºáá±á¬á·ááá·áºá¡áá« ááœá±áá±ážáá»á±ááŒááºážááᯠáááºááá¯ááºááŒááºážááẠáá±á¬ááºážááœááºáááºááŒá áºáááºá ááá¯á·á¡ááŒááºá áá±á¬ááºá áºááá áºá¡áááºážáááºááŒá¯áá¯ááºááŒááºáž ááá¯á·ááá¯áẠscript ááŸá áºáá¯ááá¯áá¯ááºáá±á¬ááºááŒááºážááŒáá·áº áááºážááá¯á·ááá¯áá»ááºáá»ááºážáááºáá¶áááŸáááŒááºážááẠáá±á¬ááºážááœááºáá«áááºá áá«á á¡áá»á¬ážáá°ááŸá¬ ááááºááá¯ááºááœá±ááᯠá¡áá¯á¶ážááŒá¯áááºá á¡áááá¹áá«ááºááᯠááŒáá·áºáá¡á±á¬ááºá
âá¡áá»á¬ážááŒááºáá°áá¯á¶áž cloud ááᯠá¡áá»á¬ážáá°ááŸá¬á¡ááºáá¬áááºáá±á«áºááŸá ááŒááºááá¯áá¹ááá®áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážá áá±ážáá±á¬ááºááá·áº ááœááºáá»á°áá¬áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒá ẠáááºááŸááºááŒá®áž áááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯ááá¯áá° ááá¯á·ááá¯áẠáááºáá°ááá¯áá°ááá¯ááºáž áááŸáá á±áááºááŒá áºáááºá áááºážááá¯á·ááẠá¡ááá²á· ááá¯á·ááá¯áẠááá¯á¡ááºááá±á¬ááºáá±á¬ááºážáá»ááá¯ááºááŒá®áž áá¯á¶ážá áœá²áá°áá»á¬ážááẠCPU áááºáááºááŸá¯á ááá¯ááŸá±á¬ááºááŸá¯ ááá¯á·ááá¯áẠáááºážááá¯á·á á¬ážáá¯á¶ážááá·áº bandwidth á¡ááœáẠá¡áá¯á¶ážááŒá¯ááŸá¯áá áºáá¯áá»áŸááºáᬠáá±ážáá»á±ááá¯ááºá á±áááºááŒá áºáááºá"
á¡áá»á¬ážáá°ááŸá¬ ááááºááá¯ááºááœá±á áá±ážááŒá®ážáááºááá¯á· áááºááŒááºáá»ááºááŸááááºá áá«áá±ááá·áº áá°ááá¯á·áá²á· á¡ááá á áááºáá°ážááá±á¬á· áá¯áá¹ááá® áá¯ááºáá»á ááááºááœá±ááᯠáá»áŸá±á¬á·áá»ááá¯á·áá«áá²á á¡á á±á¬ááá¯ááºážááœáẠáá±á¬áºááŒáá²á·ááá·áºá¡ááá¯ááºážá á¡áá»á¬ážáá°ááŸá¬ cloud áá»á¬ážááẠááá·áºá¡á¬áž á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááá¯á¡á¬ážáááẠááœáá·áºááŒá¯ááŒá®áž áááºážááá¯á·ááᯠáááºá¡áá¯á¶ážááŒá¯ááá·áºá¡áá»áááºá¡ááœááºáᬠáá±ážáá»á±ááá¯ááºáááºá ááá¯á·á¡ááŒáẠáá áºáá«áá áºáá¶ááœáẠáááºáááºážáá»á¬ážááẠáá á¬áá»á¬ážáááŸááááºááᯠáá»áœááºá¯ááºááá¯á·áá±á·áá»á±á¬á·ááŒááŒá®áž áá»áœááºážáá»ááºááá¬ááŸááºáá»á¬ážáááºáááºáž á á»á±ážááŒá®ážáá±á¬á¡áááºážá¡ááŒá áºáá áºáá¯ááŒá áºáááºá á¡áá»á¬ážáá°ááŸá¬ cloud áá»á¬ážááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠáá¶á·ááá¯ážáá°áá®ááŸá¯ááᯠááá¯ááá¯ááœááºáá°á á±ááŒá®ážá á¡ááºáá»ááºáá®áá¬áá»á¬ážááᯠááá¯áá¡áá±ážááŒá®ážáá±á¬á¡áá¯ááºáá»á¬ážááᯠá¡á¬áá¯á¶á áá¯ááºááá¯ááºá á±áááºáᯠááá·áºááœááºážá ááºážá á¬ážááááºááŒá áºáááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
á¡áá¯á¶ážááŸá¡áá¯á¶áž UI á ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºááá·áº áá®ážááŒá¬ážá¡áááºážá¡ááŒá áºáá»á¬áž ááá¯á¡ááºáá«ááááºážá á¡ááŒá±áá¶á¡á¬ážááŒáá·áº áááºážááá¯á·ááẠááá±á¬ááºáá¬áá»á¬ážááŸáá·áº emulator áá»á¬ážá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠ(áá±á¬ááºá¡ááá¯ááºážááœáẠKubernetes á¡ááŒá±á¬ááºáž ááœá±ážááœá±ážáá«áááº) ááẠvirtual machines ááá¯á·ááá¯áẠclusters áá»á¬ážááŒá áºáááºá áá»áœááºá¯ááºááá¯á· áááŒáá¯ááºáááºáááºáž áá¯ááºáá±á¬ááºááá¯áá±á¬ ááá±á¬ááºáá¬áá»á¬ážááŸáá·áº emulator áá»á¬áž ááá¯áá»á¬ážáá±á CPU ááŸáá·áº Memory ááá¯á¡ááºáá±áá±á áááºážá¡ááœáẠáá»áœááºá¯ááºááá¯á· áá±ážáá±á¬ááºáááá·áºááœá± ááá¯áá»á¬ážáá±ááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá á ááºážáááºááŸá¯á¡ááá¯á¡áá»á±á¬ááºá áá áºáá¡ááŒá±á¡áá±ááœáẠá¡áá»á¬ážáá°ááŸá¬ cloud áá»á¬ážááẠááá¯á¡ááºáá»ááºá¡á ááá±á¬ááºáá¬/emulators á¡áá»á¬ážá¡ááŒá¬áž (100á 200á 1000...) ááᯠáááºáááºááá¯ááºá á±áááºá á ááºážáááºááŸá¯ááááºáá»á¬ážááᯠááŒááºááá¯ááºááá»áŸááŒááºááŒááºááá°ááŒá®áž ááá¯áá²á·ááá¯á· áá°ážááŸááºážááŸááºážáá¯á¶ážá á¬ážááááºááŒáá·áº ááœá±áá±ážáá»á±ááŒááºážááᯠáááºááá¯ááºáá« áá«áá«á
áá±áááºážá¡á á¬ážáá¯á¶áž cloud áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááŸá¬ Amazon Web Services (AWS)á Microsoft Azureá Google Cloud Platform (GCP) ááá¯á·ááŒá áºáááºá áá¯ááºáááºážáááºážááœáŸááºááœáẠGCP ááá¯á¡áá¯á¶ážááŒá¯áá¯á¶ááá°áá¬áá»á¬ážááᯠáá±ážáá±á¬ááºáá¬ážáá±á¬áºáááºáž áá±áá¯áá»á¡á¬ážááŒáá·áº á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážáá¯ááºáááºážáá»á¬ážá¡ááœáẠáááºá¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬ááẠá¡áá±ážáááŒá®ážáá«á áááºážááá¯á·á¡á¬ážáá¯á¶ážááẠááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº áá°áá®áá±á¬ áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáá±ážá áœááºážáááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áááºáá±á¬ááºááŸá¯áá±ážáá°áá áºáŠážááᯠááœá±ážáá»ááºáááºá á á®áá¶ááá·áºááœá²ááŸá¯ááẠá€áá±á¬ááºážáá«ážá á¡ááá¯ááºážá¡áá¬áááºáá»á±á¬áºááœááºááá·áº áá¯áá¹ááá®á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááŸáá·áº áá¯ááºáááºážááá¯á¡ááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡áá±ážáá±ážáá«áááºá á¡á±á¬áºááá¯áááºáá áºá¡ááºáá»ááºáá®áá¬áá»á¬ážá¡ááœááºá Sauce Labsá BrowserStacká BitBar á áááºááá¯á·áá²á·ááá¯á·áá±á¬ á ááºážáááºáááºááœááºáá»ááºá¡ááœáẠcloud ááááºáá±á¬ááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŸáá·áº cloud áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážá¡áá¯á¶ážááŒá¯ááŒááºážááᯠááŸáá¯ááºážááŸááºááẠááá¯áá áááºáááºá á¬ážááœááºáá±á¬ááºážáá«áááá·áºáááºá áá«ááá¯áááºáž áá¯ááºááŒáá¡á±á¬ááºá áá»áœááºáá±á¬á·áºá¡ááŒááºá¡áá Sauce Labs ááẠá¡áá»á±á¬áºááŒá¬ážáá¯á¶áž cloud testing farm ááŒá áºáá±á¬ááŒá±á¬áá·áº áááºážááᯠááŸáá¯ááºážááŸááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá
á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠGCP ááŸáá·áº Sauce Labs áá»á¬áž-
áá»áœááºá¯ááºááá¯á·ááẠáááºá ááºážáááºááŸá¯ á áá¯ááŸáá·áº Android á ááºážáááºááŸá¯ á áá¯ááᯠáá áºááŒáá¯ááºááẠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáááºáᯠá áááºáá°ážááŒáá·áºááŒáá«á áá¯á·á áááºážá¡ááœááºáá»áœááºá¯ááºááá¯á·ááẠGCP ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž Selenoid ááŒáá·áº virtual machine 8 áá¯ááᯠrun áá«áááºá ááááá áºáá¯ááœáẠááá±á¬ááºáá¬áá»á¬ážááŒáá·áº ááœááºááááºáᬠá áá¯ááᯠááŒá¯á á¯áá»áá¯ážáá±á¬ááºáá«áááºá áá¯áááááœáẠemulator áá«áá±á¬ ááœááºááááºáᬠá áá¯ááŸááááºá á á»á±ážááŸá¯ááºážááœá±ááᯠáá áºáá»ááºááŒáá·áºááá¯ááºáá¡á±á¬ááºá
Chrome ááŒáá·áº ááœááºááááºáá¬áá
áºáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááẠáá»áœááºá¯ááºááá¯á· ááá¯á¡ááºáá«áááºá n1-á
á¶-1 áá¬ážá Android ááŸá¬ááá¯áááºáá±á¬á· ááŒá
áºáá«áááá·áºáááºá n1-á
á¶-4 emulator áá
áºáá¯á¡ááœááºá á¡ááŸááºááŸá¬á ááá¯ááá¯ááŒá±á¬ááºážááœááºááŒááºááœááºááŸáá·áº á
á»á±ážáááºáá¬áá±á¬áááºážáááºážááŸá¬ CPU/Memory á¡ááœáẠáááºááŸááºáá¬ážáá±á¬ á¡áá¯á¶ážááŒá¯áá°áááºááá¯ážáá»á¬ážááᯠáááºááŸááºáááºááŒá
áºáá±á¬áºáááºáž ááá¯á¡áá»áááºááœáẠSauce Labs ááŸáá·áº ááŸáá¯ááºážááŸááºáááºá¡ááœáẠá¡áá±ážáááŒá®ážáá«á
áá±á¬á·á áºáá¬ááºááœá²áááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááœáẠá¡ááœááºá¡ááá»á¬áž ááŒá áºáá«áááº-
ááŒá¬ážáá¬ážáá»ááºááᯠááẠáááááŒá¯ááááŒá®ážááŒá®áᯠáá»áœááºá¯ááºáá¯á¶ááŒááºáá«áááºá ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááá¯ááºáááºážáá¬áááºá¡ááœáẠááœááºáá»ááºááŸá¯áá»á¬ážáá«ááŸáááá·áº ááá¬ážááᯠáá»áœááºá¯áẠáááºáááºáá±á¬áºááŒáá±ážáá«áááº-
ááá¯á¡ááºáá±á¬á¡áááºážá¡ááŒá
áºáá»á¬áž
áá
ááº
á¡áá¯ááºáá»áááº(áááẠá áá¬áá®á០á á áá¬áá®)
á¡áá¯ááºáá»áááº+ áááŒá
áºâááá¯ááºâáá°ážá
áááºá¡ááœáẠGCP
n1-standard-1 x 8 = n1-standard-8
$194.18
23 ááẠ* 12 áá¬áá® * 0.38 = $104.88
23 ááẠ* 12 áá¬áá® * 0.08 = $22.08
áááºá¡ááœáẠSauce Labs
Virtual Cloud8 á¡ááŒáá¯ááºá
ááºážáááºááŸá¯áá»á¬áž
$1.559
-
-
Android á¡ááœáẠGCP
n1-standard-4 x 8: n1-standard-16
$776.72
23 ááẠ* 12 áá¬áá® * 1.52 = $419.52
23 ááẠ* 12 áá¬áá® * 0.32 = $88.32
Android á¡ááœáẠSauce Labs
Real Device Cloud 8 á¡ááŒáá¯ááºá
ááºážáááºááŸá¯áá»á¬áž
$1.999
-
-
áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºážá á¡áá°ážáááŒáá·áº ááá·áºááŸá áºáá¬áá® á¡áá¯ááºáá»áááºá¡ááœááºáž á ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáá«á áá¯ááºáá»á áááẠááœá¬ááŒá¬ážáá»ááºááŸá¬ ááŒá®ážáá¬ážáá«áááºá áá«áá±ááá·áº ááŒáá¯áááºáá¬ááœááºááá¯ááºáá²á· á ááºááœá±ááᯠáá¯á¶ážááẠáá¯ááºáá»á áááẠááá¯áááºáá¬ááá¯ááºáá«áááºá á¡á²áá«áá¬áá²?
ááŒáá¯áááºáá¬ááœááºááá¯ááºáá±á¬ VM ááẠáá¬áááºáá¬áááá»á¬ážááẠáá»á¬ážá áœá¬áááºáá¬áá±á¬á á»á±ážááŸá¯ááºážááŒáá·áº áááºáááºáá®ážááŒá®áž áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ á¥ááá¬áá áºáá¯ááŒá áºáááºá ááá¯á·áá¬ááœááºá á¡ááŒá¬ážáá¯ááºáá±á¬ááºá áá¬áá»á¬ážá¡ááœáẠááá¯á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááœáá·áº ááá¯á¡ááºáá«áá Compute Engine ááẠá€ááŒá áºáááºáá»á¬ážááᯠ(ááŒáá¯áááº) áááºááá¯ááºážáá¬ážááá¯ááºáááºá ááŒáá¯áááºáá¬ááœááºááá¯ááºáá±á¬ ááŒá áºáááºáá»á¬ážááẠááœááºááŒá°áá¬á¡ááºáá»ááºá áœááºážááẠááá¯áá»áŸá¶áá±áá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááááŸáááá¯ááºááŸá¯ááŸá¬ á¡áá¯á¶ážááŒá¯ááŸá¯áá±á«áºáá°áááºá ááœá²ááŒá¬ážáá«áááºá
ááá·áºá¡ááºááºáá»á¬ážááẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠáá¶ááá¯ááºáááºááŸáááŒá®áž ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ áá¬áá ááŒáá¯áááºáá¬ááœááºááŸá¯áá»á¬ážááᯠáá¶ááá¯ááºáááºááŸááá«áá ááŒáá¯áááºáá¬ááœááºááá¯ááºááá·áºá¡áá¬áá»á¬ážááẠáááºá Compute Engine áá¯ááºáá»á ááááºááᯠáááááá¬áᬠáá»áŸá±á¬á·áá»ááá¯ááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá batch processing jobs ááẠááŒáá¯áááºáá¬ááœááºááá¯ááºáá±á¬ á¡ááŒá±á¡áá±áá»á¬ážááœáẠáá¯ááºáá±á¬ááºááá¯ááºáááºá á¡áá»áá¯á·áá±á¬ááŒá áºáááºáá»á¬ážááẠáá¯ááºáá±á¬ááºáá±á ááºá¡ááœááºáž áááºááá·áºááœá¬ážáá«á á¡áá¯ááºááŸá±ážááœá±ážáá±á¬áºáááºáž áá¯á¶ážááááºááá·áºááœá¬ážáááºááá¯ááºáá±á ááŒáá¯áááºáá¬ááœááºááá¯ááºáá±á¬ áá¬áááá»á¬ážááẠááá·áºáááºááŸáá¡ááŒá±á¡áá±áá»á¬ážááœáẠá¡ááá¯á¡áá¯ááºáá¬áááºáá»á¬ážááᯠáááá·áºáá²ááŸáá·áº áá±á¬ááºáááºáá¬áááºááŒá áºáááºáá»á¬ážá¡ááœáẠááá·áºá¡á¬áž á á»á±ážááŸá¯ááºážá¡ááŒáá·áºáá±ážáá±á¬ááºááẠáááá¯á¡ááºáá² ááŒá®ážááŒá±á¬ááºá á±áá«áááºá
áááŒá®ážáá±ážáá«á ááááºáá±á¬á· á¡áá¬ážáá°áá»ááẠ12 áá¬áá®ááŒá¬ áááºáá°á០á á¬áá±ážááœá²áááŒá±ááá°ážááá¯áᬠáá±áá»á¬áá«áááºá ááá¯á·ááá¯áá»áŸááºá áááºááẠvirtual machines áá»á¬ážááᯠáááá¯á¡ááºááá·áºá¡áá« á¡ááá¯á¡áá»á±á¬áẠá áááºááá¯ááºááŒá®áž áááºááá·áºááá¯ááºáááºá á¡ááŸááºááááºá¡áá¯á¶ážááŒá¯áá»áááºááᯠáá áºáááºáá»áŸáẠ6 áá¬áá®á¡áá áá»áŸá±á¬á·áá»ááá¯ááºáááºá ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááá¯ááºáááºážáá±á¬ááºáá¬ááœáẠááœá±áá±ážáá»á±ááŸá¯ááẠááá±á¬ááºáᬠ11 áá¯á¡ááœáẠáá áºááá»áŸáẠ$8 ááá¯á· áá»á±á¬á·áá»ááœá¬ážáááºááŒá áºáááºá áá«á á¡á¶á·ááŒá áá¬áá² ááá¯ááºáá¬áž? ááá¯á·áá±á¬áº ááŒáá¯áááºáá¬ááœááºááá¯ááºáá±á¬ á ááºáá»á¬ážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá€á¡ááŒá±á¡áá±áá»á¬ážááᯠáá±á¬á·ááºáá²ááºááœáẠáá¶á·ááá¯ážáá±ážááá¯ááºáá±á¬áºáááºáž á¡ááŸá±á¬áá·áºá¡ááŸááºáá»á¬ážááŸáá·áº ááááºáááŒáááºáá»á¬ážá¡ááœáẠááá¯áá áá¯áẠááŒááºáááºááááºááŒá áºáááºá ááá¯ááºáááºáá«áááºá
áá«áá±ááá·áº 'cloud test farms ááœá±ááᯠáááºáá±á¬á·á០ááá¯á¶ážáá°áž' ááá¯á· ááŒá±á¬áá±áá¬áá±á¬á· áááŸááá«áá°ážá áá°ááá¯á·ááŸá¬ á¡á¬ážáá¬áá»ááºááœá± á¡áá»á¬ážááŒá®ážááŸááááºá ááááŠážá áœá¬á áááºážááẠvirtual machine áá áºáá¯áá»áŸáá¬ááá áá±á¬ááºá áºá¡ááœááºážá០áá¯ááºáá±á¬ááºááá¯ááºá áœááºážá¡á á¯á¶áá«ááŸááá±á¬ ááŒáá·áºá á¯á¶áá±á¬á ááºážáááºááŸá¯ automation ááŒá±ááŸááºážáá»ááº- á¡áá±ážááŸáááºáá±á¬ááºááŸá¯á ááŸááºáááºážáá»á¬ážá áááºáá¬ážááŒááºáá¬ááºáá¯á¶áá»á¬ážá áá®áá®ááá¯ááá¯ááºáá°ážááŸá¯á á¡áá»áá¯ážáá»áá¯ážáá±á¬ááá±á¬ááºáá¬áá»á¬ážááŸáá·áº áá¯ááºááá¯ááºážááá¯ááºáá¬ááá¯ááá¯ááºážáááááá¬áá»á¬ážá á¡ááŒá±á¡áá±áá»á¬ážá áœá¬ááœááºá áááºážááẠáááŸááááŒá áºááá¯á¡ááºáá±á¬ á¡ááá¯ááºá á¬ážááœá±ážáá»ááºááŸá¯áá áºáᯠááŒá áºááá¯ááºáááºá á¡áá»á¬ážáá°ááŸá¬ cloud áá»á¬ážááẠLinux/Windows á áá áºáá»á¬ážááá¯áᬠáá±ážáá±á¬ááºááá¯ááºáá±á¬á¡áá«ááœáẠá ááºážáááºááŒááºážááááºáá±á¬ááºážáá»á¬ážááẠIOS á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááœáẠá¡áá°ážá¡áá¯á¶ážáááºáá«áááºá áá«áá±ááá·áº áá±á¬ááºáá±á¬ááºážáá«ážááœá±ááŸá¬ iOS á¡ááŒá±á¬ááºážááŒá±á¬áá«áááºá á¡ááŒá±á¡áá±ááᯠá¡ááŒá²ááŒáá·áºááŸá¯ááŒá®áž á¡áá¯ááºáá»á¬ážá០á áááºááẠá¡ááŒá¶ááŒá¯ááá¯áá«áááº- á¡áá»áá¯á·ááá á¹á áá»á¬ážááœáẠá¡áá»á¬ážáá°ááŸá¬ clouds áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠááá¯ááá¯á á»á±ážáááºáá¬ááŒá®áž ááá¯ááá¯áááá±á¬ááºááŸá¯ááŸáááŒá®áž á¡áá»áá¯á·áá±á¬á ááºážáááºááŸá¯ááááºáá±á¬ááºážáá»á¬ážááẠáá¯á¶ážá áœá²áááá·áºááœá±ááᯠáá»áááºážáá±ááá¯ááºáááºáá«áááºá
áááºááŸá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡ááŒá±á¡áá± áá¯á¶á¥ááá¬
áá±á·áá¬áááºááá·áºááºáá»á¬áž
GCP GCP- ááŒáá¯áááºáááááá¯ááºáá«á GCP- VM á á»á±ážááŸá¯ááºáž SauceLabs Cloud áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááᯠááŸáá¯ááºážááŸááºááŒááºážá
á¡áá¬ážáá°áááááá¬áá»á¬áž
6. áá®ážááŸá¯ááºááŒááºážá
áááºážááá¬á¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº
ááááºážáá±á¬ááºážááŸááá«ááẠ- áá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºážáá«ážáá¡áá¯á¶ážáá®ážáá«ážááœáẠááŸááá±áá«áááºá áá±á¬áá±á¬áááºááœááºá áá»áœááºá¯ááºááá¯á·á á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááœáẠDocker-enabled tools áá»á¬áž- Selenium grid ááŸáá·áº Selenoid ááá¯á¡áá¯á¶ážááŒá¯á GitLab CI ááŸáááá·áº á¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááá·áº áááºááŸáá·áº Android á ááºážáááºááŸá¯áá»á¬áž áá«áááºáá«áááºá ááá¯á·á¡ááŒááºá áá»áœááºá¯ááºááá¯á·ááẠááá±á¬ááºáá¬áá»á¬ážááŸáá·áº emulator áá»á¬ážááŒáá·áº ááœááºááááºáá¬áá»á¬ážááᯠáááºáá¶áá»ááºážááááºá¡ááœáẠGCP ááŸáá áºááá·áº áááºáá®ážáá¬ážáá±á¬ virtual machines áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá áá¯ááºáá»á ááááºáá»á¬ážááᯠáá»áŸá±á¬á·áá»áááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠဠvirtual machines áá»á¬ážááᯠáááºááá¯á¡á¬ážááœááºáᬠá áááºááŒá®áž á ááºážáááºááŒááºážáááŒá¯ááá·áºá¡áá« áááºážááá¯á·ááᯠáááºááá·áºá á±áá«áááºá áá»áœááºá¯ááºááá¯á·á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááŒáŸáá·áºáááºáá±ážááá¯ááºááá·áº á¡ááŒá¬ážá¡áá¬áá»á¬áž ááŸááá«ááá¬ážá á¡ááŒá±á áá¯ááºáááº! Kubernetes (K8s) ááŸáá·áºááœá±á·áá¯á¶áá«á
áŠážá áœá¬á á áá¬ážáá¯á¶ážáá»á¬ážá á¯á ááºážááŸá¯á á¡á á¯á¡áá±ážááŸáá·áº Kubernetes ááá¯á·ááẠáá áºáá¯ááŸáá·áºáá áºáᯠáááºááá¯á·áááºá ááºáááºááᯠááŒáá·áºááŒáá«á áá¯á·á ááŒáá·áºáá¬ážáá±á¬á¡ááá·áºááœááºá orchestration ááẠá¡ááá®áá±ážááŸááºážáá»á¬ážááᯠááŒáá·áºáá»ááºááŒá®áž á á®áá¶ááá·áºááœá²ááá·áºá áá áºááŒá áºáááºá á ááºážáááºááŸá¯ á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááœááºá ááá¯áá²á·ááá¯á· ááœááºááááºáá¬ááá·áºáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááẠSelenium grid ááŸáá·áº Selenoid ááá¯á·ááŒá áºáááºá Docker ááŸáá·áº K8s ááẠáá áºáá¯ááŸáá·áºáá áºáᯠá¡á¬ážááŒáá·áºáá±ážáááºá ááááá áºáá»áá¯ážááᯠá¡ááá®áá±ážááŸááºážááŒáá·áºáá»ááºáááºá áá¯áááááᯠáá®ážááŸá¯ááºááŒááºážá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºá áá áºááẠK8s ááẠá¡á á¯á¡áá±ážáá áºáá¯ááŒá áºáááºá á¡á á¯á¡ááœá²á·ááá¬áááºááŸá¬ á¡áá»áá¯ážáá»áá¯ážáá±á¬áá¯ááºáá±á¬ááºááá¯ááºá áœááºážáá»á¬ážá áááá¯ááááºáá»á¬ážááŸáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá¬áá¬áá áºáᯠ(cluster) á¡ááœááºážááœáẠááá·áºááœááºážáááºááœáá·áºááŒá¯ááá·áº VMs ááᯠNodes á¡ááŒá Ạá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá Nodes áá áºáá¯áᯠáá»ááºááœááºáá«áá áá»áœááºá¯ááºááá¯á·á á¡ááá®áá±ážááŸááºážá á¡ááŸá±á¬ááºá¡ááŸááºáááºážá áœá¬ áááºáááºááŸá¯ááᯠáá±áá»á¬á á±ááá·áº á¡ááŒá¬áž Nodes áá»á¬ážááᯠáá±á¬ááºáá°áá«áááºá áááºážá¡ááŒááºá K8s ááẠload ááŸáá·áº ááá·áºáááºáá»ááºáá»á¬ážá¡áá±á«áºá¡ááŒá±áá¶á á¡áá±á¬ááºážáá¯á¶ážá¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·á¡ááá¯á¡áá»á±á¬ááºááá°áá±ážáá±á¬ááŒá±á¬áá·áº á¡ááá¯ááºážá¡áá¬áá»á²á·ááŒááºážááŸáá·áºáááºááá¯ááºááá·áº á¡áá±ážááŒá®ážáá±á¬áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŸááááºá
á¡ááŸááºááŸá¬á Kubernetes ááᯠá¡á ááŸáá±á ááá¯ááºááá¯ááºá¡áá¯á¶ážááŒá¯ááŒááºážááẠá¡áá±ážá¡ááœá²á¡áá¯ááºááá¯ááºáá±á "Kubernetes The Hard Way" áá²á· áá¬áááºááŒá®ážáááºážáááºážááœáŸááºááᯠááá·áºááºáá»ááºáá¬ážáá²á·ááẠá áááºáááºá á¬ážááẠáá±á·áá»áá·áºááá¯ááºáá«áááºá ááá¯á·áá±á¬áº áá¶áá±á¬ááºážáá±á¬ááºáá áœá¬á á¡ááŒá¬ážáááºážáááºážáá»á¬ážááŸáá·áº áááááá¬áá»á¬ážááŸááááºá á¡ááœááºáá¯á¶ážáááºážáááºážááŸá¬ GCP ááœáẠGoogle Kubernetes Engine (GKE) ááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºááŒá®áž ááá áºá¡áááºážáááºááŒáá·áº á¡ááá·áºáá¯ááºáá¬ážáá±á¬ á¡á á¯á¡áá±ážáá áºáá¯ááᯠáááŸáá á±áááºááŒá áºáááºá áááºáá°ááŸá¯á áááºááẠá€áá»ááºážáááºáááºážááᯠá¡áá¯á¶ážááŒá¯ááẠáá»áœááºá¯ááºá¡ááŒá¶ááŒá¯ááá¯áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áááºážááẠááá·áºáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážá¡ááœáẠK8s ááᯠáááºááá¯á·á¡áá¯á¶ážááŒá¯ááááºááᯠáá±á·áá¬ááẠá¡á¬áá¯á¶á áá¯ááºááá¯ááºá á±áá±á¬ááŒá±á¬áá·áº á¡ááœááºážááá¯ááºážá¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá áºáá¯ááŸáá·áºáá áºáᯠáá±á«ááºážá ááºááá·áºáááºááá¯á·ááᯠáá±á·áá¬ááŒááºážááẠá¡á¬áá¯á¶á áá¯ááºááá¯ááºá á±áááºááŒá áºáááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
K8s á០áá¶á·ááá¯ážáá±ážáá±á¬ áááá¬áááºááŸá¬ážáá±á¬ á¡ááºá¹áá«áááºá¡áá»áá¯á·ááᯠááŒáá·áºááŒáá«á áá¯á·á
- á¡ááá®áá±ážááŸááºáž ááŒáá·áºáá»ááºááŒááºáž- VM áá»á¬ážá¡á á¬áž nodes á¡á á¯á¡áá±ážáá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
- ááá¯ááºážááá áºá áá±ážáá»á²á·ááŒááºáž- áááºááá¯á¡á¬ážááœááºáᬠá¡áá¯á¶ážááŒá¯ááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážá áá¯ááºáá»á ááááºááᯠáá»áŸá±á¬á·áá»áá±ážáááºá
- ááá¯ááºááá¯ááºáá¯á á¬ážááŒááºáž- á¡á á±á·áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠááŒááºáááºááá°ááŒááºáž (ááááºá¡áá±ááŒáá·áº ááœááºááááºáá¬áá»á¬ážááᯠááŒááºáááºááá°ááŒááºáž)á
- á¡ááºááááºáá»á¬ážááŸáá·áº á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡áá»áááºáááá¯ááºážáá² ááŒááºáááºáá¯ááºááááºážááŒááºáž- áááááá¬áá»á¬áž á¡ááºááááºáá¯ááºááŒááºážá ááá±á¬ááºáá¬áá»á¬ážááŸáá·áº á¡á®áá°áá®áá¬áá»á¬ážááẠáááºááŸáá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá áá¯ááºáááºážááᯠá¡ááŸá±á¬áá·áºá¡ááŸááºáááŒá áºá á±áá«á
ááá¯á·áá±á¬áº K8s ááẠááœá±áá»ááºáááºááá¯ááºáá±ážáá«á áá»áœááºá¯ááºááá¯á·ááá·áºááœááºážá
ááºážá
á¬ážáá±ááá·áº áááááá¬áá»á¬áž (Selenium gridá Selenoid) á á¡á¬ážáá¬áá»ááºáá»á¬ážááŸáá·áº ááá·áºáááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¬ážáááºááẠK8s á ááœá²á·á
ááºážáá¯á¶ááᯠá¡ááá¯áá»á¯áẠááœá±ážááœá±ážáá«áááºá Cluster ááœáẠNodes ááŸá
áºáá»áá¯ážáá«ááŸááááº- Master Nodes ááŸáá·áº Workers Nodesá Master Nodes áá»á¬ážááẠá
á®áá¶ááá·áºááœá²ááŸá¯á á¡áá¯á¶ážáá»ááŒááºážááŸáá·áº á¡áá»áááºááá¬ážááœá²ááŒááºážááá¯ááºáᬠáá¯á¶ážááŒááºáá»ááºáá»á¬ážá¡ááœáẠáá¬áááºááŸááá«áááºá Workers node áá»á¬ážááẠá¡ááá®áá±ážááŸááºážáá»á¬áž áá¯ááºáá±á¬ááºááá·áºáá±áá¬ááŒá
áºáááºá Node áá»á¬ážááœáẠcontainer runtime áááºáááºážáá»ááºáááºáž áá«ááŸááá«áááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áááºážááẠááœááºááááºáá¬ááŸáá·áºáááºáááºááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠáá¬áááºááŸáááá·áº Docker ááŒá
áºáááºá áá«áá±ááá·áº á¥ááá¬á¡á¬ážááŒáá·áº á¡ááŒá¬ážááœá±ážáá»ááºá
áᬠááŒá±ááŸááºážáááºážááœá±áááºáž ááŸááá«áááºá
á áá±ážáá»á²á·ááŒááºážá¡ááºá¹áá«áááºááẠáá±á¬á·áá»ááºááŒá áºááŒá®áž á¡á á¯á¡áá±ážáá áºáá¯á¡ááœááºáž áá¯á¶ááŸááºááŸá áºáá¯áá¯á¶ážááŸáá·áº node á¡ááœááºážááŸá pods ááŸá áºáá¯áá¯á¶ážááᯠá¡áá¯á¶ážáá»ááá¯ááºáááºá node ááŸáá·áº pods ááŸá áºáá¯áá¯á¶ážááœáẠá¡áá¯á¶ážáá»ááá¯ááºáá±á¬ á¡ááá¯ááºážá¡áᬠá¡áá»áá¯ážá¡á á¬áž 2 áá¯ááŸááááºá áááá¡áá»áá¯ážá¡á á¬ážááŸá¬ áá±ááŒááºáá®ááŒá áºááẠ- node/pods á¡áá±á¡ááœááºááᯠááá¯ážááŒáŸáá·áºááŒááºážááŒáá·áº á¡ááá¯ááºážá¡áá¬ááᯠááá¯ááºážáá¬ááŒááºáž ááŒá áºáá±á«áºáá«áááºá áá®á¡áá»áá¯ážá¡á á¬ážá ááá¯áá±á¬ááºážáá«áááºá áá¯áááá¡áá»áá¯ážá¡á á¬ážááŸá¬ áá±á«ááºááá¯ááºááŒá áºáááºá Node/pods áá»á¬ážá á¡ááœááºá¡á á¬ážááᯠááá¯ážááŒáŸáá·áºááŒááºážááŒáá·áº áááºážááá¯á·á á¡áá±á¡ááœááºááᯠáá»á²á·ááœááºááŒááºáž ááá¯ááºáá²á
ááᯠá¡áááºáá±á¬áºááŒáá« á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááŸáá·áº á ááºáá»ááºážá áá»áœááºá¯ááºááá¯á·á áááááá¬áá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
áá®áá®áá®áááºááá áº
á¡á á±á¬ááá¯ááºážááœááºáá±á¬áºááŒáá²á·ááá·áºá¡ááá¯ááºážá Selenium grid ááẠá¡ááœááºáá±áááºážá á¬ážáá±á¬ tool áá áºáá¯ááŒá áºááŒá®áž áááºážááᯠááœááºááááºáá¬ááá·áºááœááºážáá¬ážááŒááºážááŸá¬ á¡á¶á·ááŒá áá¬áááŸááá«á ááá¯á·ááŒá±á¬áá·áºá Selenium grid ááᯠK8s ááœááºá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŸá¬ á¡á¶á·ááŒá áá¬ááá¯ááºáá«á áááºážááá¯ááŒá¯áá¯ááºáá¯á¶áá¥ááá¬ááá¯ááá¬ážááẠK8s ááá¯ááŸá±á¬ááºááŸá¯ááœááºááœá±á·ááá¯ááºáááºá áá«ááá¯ááºážááá¯áá²á á¡ááá¯ááºážáá²á·á¡áá¯á¶ážááŸá¬ ááá·áºááºááœá±ááᯠááœá²áááºáá¬ážáááºá ááá¯á·á¡ááŒááºá áááºážááœáŸááºáá»ááºááẠTerraform ááœáẠáááºážááᯠáááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠááŒááá¬ážáááºá ááá±á¬ááºáá¬ááœááºááááºáá¬áá»á¬ážáá« á ááºáá±á¬ pods á¡áá±á¡ááœááºááá¯á áá±ážáá»áááºáž áááºážááœáŸááºáá»ááºáá»á¬ážáááºážááŸááááºá ááá¯á·áá±á¬áº K8s áá¡ááŒá±á¡áá±ááœáẠá¡ááá¯á¡áá»á±á¬ááºá áá±ážáá»á²á·ááŒááºážáá¯ááºáá±á¬ááºáá»ááºááẠáá¯á¶ážááááºááŸá¬ážáá±á¬á¡áá¯ááºááá¯ááºáá±ážáá«á á áááºáá±á·áá¬áá»áááºááŸá¬áá±á¬á· áááºááœá±á·áá»áá²á· áááºážááœáŸááºáá»áẠáá«ááŸááá¯áẠá¡ááŒá¶ááŒá¯áá»ááºááœá±ááᯠááŸá¬áááœá±á·áá²á·áá«áá°ážá DevOps á¡ááœá²á·ááá¶á·ááá¯ážááŸá¯ááŒáá·áº áá±á·áá¬ááŸá¯á¡áá»á¬ážá¡ááŒá¬ážááŸáá·áº á ááºážáááºááŸá¯áá»á¬ážááŒá®ážáá±á¬ááºá á¡áá¯ááºááá¬áž node áá áºáá¯á¡ááœááºážááœááºááŸááá±á¬ pod áá áºáá¯á¡ááœááºáž ááá¯á¡ááºáá±á¬ááá±á¬ááºáá¬áá»á¬ážááŸáá·áºá¡áá° ááœááºááááºáá¬áá»á¬ážááŒá¯á á¯áá»áá¯ážáá±á¬ááºááŒááºážáááºážáááºážááᯠáá»áœááºá¯ááºááá¯á·ááœá±ážáá»ááºáá²á·áááºá á€áááºážáááºážááẠáá¶áá«ááºáá»á¬ážááᯠááá¯ážááŒáŸáá·áºááŒááºážááŒáá·áº node áá»á¬ážá á¡áá»á¬ážááá¯áẠá¡ááá¯ááºážá¡áᬠáá»á°áá¬ááᯠá¡áá¯á¶ážáá»ááá¯ááºá á±áá«áááºá áááºážááẠá¡áá¬áááºááœáẠááŒá±á¬ááºážáá²áá¬áááºáᯠáá»áŸá±á¬áºááá·áºááŒá®áž á¡áá°ážáááŒáá·áº ááŒá±á¬ááºážáá²áá¬ážáá±á¬ á¡ááœááºážááá¯ááºážáááá¯áá¬ááŒáá·áº Selenium grid 4 ááᯠáá¯ááºáá±ááŒá®ážáá±á¬áẠááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ áá»ááºážáááºááŸá¯áá»á¬ážááŸáá·áº á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ ááŒá±ááŸááºážáá»ááºáá»á¬ážááᯠááá¯ááá¯áá±á¬áºááŒáá»ááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·ááŒááºááœá±á·ááá¯ááºáááºááŒá áºáááºá
áá®áá®ááœáá¯ááº:
K8s ááœáẠSelenoid ááŒáá·áºáá»ááºááŸá¯ááẠáááºááŸáááœáẠá¡ááŒá®ážáá¬ážáá¯á¶áž á áááºáá»ááºá áá¬ááŒá áºáááºá áááá¯ááºáááºáá«áá°ážá áá®á¡áá¯áá®á¡áá áá»áœááºá¯ááºááá¯á·ááẠáá°ážá¡ááœááºážá Selenoid ááœááºááááºáá¬ááᯠááŒá¯á á¯áá»áá¯ážáá±á¬ááºááá¯ááºáá±á¬áºáááºáž Selenoid ááẠááá±á¬ááºáá¬áá»á¬ážááŒáá·áº ááœááºááááºáá¬áá»á¬ážááᯠá áááºáá±á¬á¡áá«ááœáẠáááºážááá¯á·ááẠáá°áá®áá±á¬ pod á¡ááœááºážááœáẠááŸááá±áááºááŒá áºáááºá áááºážááẠá áá±ážáá»á²á·ááẠáááŒá áºááá¯ááºáá±á¬ááŒá±á¬áá·áºá ááááºá¡áá±ááŒáá·áºá á¡á á¯áá áºáá¯á¡ááœááºážááŸá Selenoid áá¡áá¯ááºááẠvirtual machine áá áºáá¯á¡ááœááºážááŸáá¡áá¯ááºááŸáá·áº ááœá²ááŒá¬ážáááºááá¯ááºáá«á áá¬ááºáááºážá¡áá¯á¶ážáááºá
á:
Selenoid áá²á· á¡áá¯ááºáá¯ááºáá²á·á¡áá« áá®ááááºááá¯á·ááŸá¯ááᯠáááá¬ážáá±á¬á· Developer ááœá±á Moon ááá¯á·áá±á«áºáá²á· ááá¯á¡á áœááºážáááºáá²á· tool ááᯠáá¯ááºááœáŸááºááá¯ááºáá«áááºá á€áááááá¬ááẠKubernetes ááŸáá·áº á¡áá¯ááºáá¯ááºááẠáá°áá áá®ááá¯ááºážáá¯ááºáá¬ážááŒá®áž ááááºá¡áá±ááŒáá·áº á¡á±á¬áºááá¯á áá±ážáá»á²á·ááŒááºážá¡ááºá¹áá«áááºááᯠá¡áá¯á¶ážááŒá¯ááá·áºáááºá áá«á·ááẠááŒá±á¬ááááºááá¯ááẠáá±á¬áá±á¬ááẠááŒá áºáá±áᬠáᬠáá°á K8s á¡á á¯á¡áá±áž áá¶á·ááá¯ážááŸá¯áá«ááŸááá±á¬ Selenium ááá¹áá¬ááŸá áááááá¬áá áºáᯠ(ááááá¯ááºáá±á¬á·áá«á áá±á¬ááºáááááá¬ááá¯ááŒáá·áºáá«á ) á€áá¶á·ááá¯ážááŸá¯áá±ážáá±á¬ Moon á á¡áááá¡ááºá¹áá«áááºáá»á¬ážááŸá¬-
áá¯á¶ážáááá¯ááºáá¶áá²á·á Selenoid ááẠáááºááŸáá¡áá¯á¶ážááŒá¯áá±ááá·áº ááá±á¬ááºáá¬áááºááŸááºáá»á¬ážá¡ááŒá±á¬ááºáž áááºááá¯áá®á¡áá»ááºá¡áááºááœáẠááááºážáááºážáá¬ážáááºá á¡ááŒá±á¬ááºážáá áºáá¯áá¯ááŒá±á¬áá·áº áááºážá áá¯ááºáááºážá áẠáá»ááºááœá¬ážáá«á - áááºáááºáá±ááá·áº áááºááŸááºáá»á¬ážá¡á¬ážáá¯á¶áž áá¯á¶ážááŸá¯á¶ážááœá¬ážáá«áááºá Moon ááẠá¡ááœááºážááá¯ááºážá¡ááŒá±á¡áá±áááŸáááá·áºá¡ááŒáẠáá±áá¬á ááºáá¬áá»á¬ážááœáẠáá¯á¶áá°ááœá¬ážááá¯ááºáááºá áá¯á¶áá°áá áºáᯠááá¯á·ááá¯áẠáá áºáá¯áááºááá¯áá±á¬áá¯á¶áá°áá»á¬áž áá»ááœá¬ážáá±á¬áºáááºáž ááá±á¬ááºáá¬áááºááŸááºáá»á¬ážááẠá¡áááºááŸááºáá±áá±ážáááºá
ááá¯á·ááŒá±á¬áá·áº Moon ááẠáá±á¬ááºážááœááºáá±á¬ááŒá±ááŸááºážáá»ááºáá áºáá¯ááŒá áºáá±á¬áºáááºáž ááŒá¿áá¬áá áºáá¯ááŸááááº- áááºážááẠá¡ááá¬ážááá¯ááºáá«á á á»á±ážááŸá¯ááºážááẠsessions á¡áá±á¡ááœááºáá±á«áº áá°áááº. á¡áá°ážá¡áá¯á¶ážááááºáá±á¬ 0-4 áááºááŸááºáá»á¬ážááᯠá¡ááá²á·áᬠáááºáá¯á¶ážááá¯ááºáááºá ááá¯á·áá±á¬áº ááá¹á áá¡ááŒáááºá០á áááºá áá áºáá¯á á®á¡ááœáẠ$5 áá±ážáá±á¬ááºááááºááŒá áºáááºá á¡ááŒá±á¡áá±á áá¯áá¹ááá®áá áºáá¯áá²á·áá áºáᯠááá°ááá¯ááºáá±ááá·áº áá»áœááºáá±á¬áºááá¯á·ááá á¹á ááŸá¬ Moon ááá¯á¡áá¯á¶ážááŒá¯áá¬á á¡áááá¹áá«ááºáá²á·áá«áááºá á¡áááºááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºááá¯á·ááẠáááºááá¯á¡á¬ážá¡á Selenium Grid ááŒáá·áº VMs ááᯠrun ááá¯á·ááá¯áẠcluster ááŸá Nodes á¡áá±á¡ááœááºááᯠááá¯ážááá¯ááºáááºá ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº ááá¯ááºááá¯ááºážáá áºáá¯á¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠááá±á¬ááºáᬠ500 ááá¯ááœáá·áºááŒá®áž á ááºážáááºááŸá¯áá»á¬ážááŒá®ážáá¯á¶ážááŒá®ážáá±á¬áẠá¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠáááºááá·áºááá¯ááºáááºá á¡áááºá áá»áœááºá¯ááºááá¯á·ááẠMoon ááá¯á¡áá¯á¶ážááŒá¯áá«áá áá»áœááºá¯ááºááá¯á·ááẠá á¬áá±ážááœá²áááºáá»áŸáááŒá¬áááá¯ááºáá±á¬ááºáá±áá«á á± áá áºááá»áŸáẠ500 x 5 = $2500 áááºáá¶áá±ážáá±á¬ááºááááºááŒá áºáá«áááºá áá±á¬ááºááá« Moon ááá¯á¶ážáá°ážááá¯á· áááŒá±á¬áá«áá°ážá ááá·áºáá¯ááºáááºážáá¬áááºáá»á¬ážá¡ááœááºá áááºážááẠáááŸááááŒá áºááá¯á¡ááºáá±á¬ ááŒá±ááŸááºážáá»ááºáá áºáá¯ááŒá áºááá¯ááºáááºá á¥ááá¬á ááá·áºá¡ááœá²á·á¡á ááºážááœáẠááá±á¬áá»ááºáá»á¬áž/á¡ááœá²á·áá»á¬ážááŸáááŒá®áž áá°ááá¯ááºážá¡ááœáẠááŒá®ážáá¬ážáá±á¬áá¯á¶á¡á á¯á¡áá±ážáá áºáᯠááá¯á¡ááºáá«áá á¡ááŒá²áááºážá¡ááá¯ááºážáá²á á¡áá¯á¶ážááŸá¬ ááá·áºááºáá áºáá¯áá»ááºáá¬ážáá²á·áᬠáááºážá¡áá¯ááºáá²á·áááºá ááºááŸá¯ááŸá¬ ááá¯á¡ááºáá²á· ááœááºáá»ááºááŸá¯ááœá±á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºááá¯á· á¡ááŒá¶ááŒá¯áá«áááºá
Callisto: (ááááá¬áž! áááºážááẠáá°áááºážáá±á¬ááºážáá«ážááœááºááá¯ááºáá«á áá¯ááŸá¬ážáá¬áá¬ááŒááºááᬠáá«ááŸááááºá)
áá»áœááºáá±á¬áºááŒá±á¬áá²á·áááá¯áá² Selenium áᬠá¡ááœááºáá±áááºážá á¬ážáá²á· áááááá¬áá áºáá¯ááŒá áºááŒá®áž IT áááºáááºáᬠá¡ááœááºáá»ááºááŒááºá áœá¬ ááá¯ážáááºáá±áá«áááºá áá¬áá¬ááŒááºáá¯ááºáááºážááᯠáá¯ááºáá±á¬ááºáá±á ááºá áááºáá±á«áºááœáẠCallisto áá¯áá±á«áºáá±á¬ á¡áá¬ážá¡áá¬ááŸááá±á¬ áááááá¬á¡áá áºáá áºáᯠ(áááºá¹ááá¬áá« Cypress ááŸáá·áº á¡ááŒá¬áž Selenium áá°áááºááá¬ážáá»á¬áž) áá±á«áºáá¬áááºá áááºážááẠK8s ááŸáá·áº áá°áá¡ááá¯ááºáž á¡áá¯ááºáá¯ááºááŒá®áž Nodes á¡ááŸá¶á· ááŒáá·áºáá±áá¬ážáá±á¬ pods áá»á¬ážááœáẠSelenoid ááœááºááááºáá¬áá»á¬ážááᯠááœáá·áºááá¯ááºáááºá á¡á±á¬áºááá¯á áá±ážáá»á²á·ááŒááºážá¡áá«á¡ááẠá¡áá¬á¡á¬ážáá¯á¶ážááẠáá±á¬ááºá áºááŒááºáááœáẠá¡áá¯ááºáá¯ááºáá«áááºá á¡á¶á·ááŒááœááºáá±á¬ááºážáá±á¬áºáááºáž á ááºážáááºááẠááá¯á¡ááºáááºá áá»áœááºá¯ááºááẠá€áááááá¬ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž á ááºážáááºááŸá¯áá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºááá¯ááºáá²á·ááŒá®ážááŒá áºáááºá áá«áá±ááá·áº áá±á¬ááºáá»ááºááœá²ááá¯á·á á á±á¬ááœááºážáááºá á¡áá±ážááŒá®ážááŸá¬ ááááºááœá±áááŒá®ážá áá±á¬ááºáá±á¬ááºážáá«ážááœá±ááŸá¬ áá¯á¶ážáááºáá»ááºáá áºáᯠáá¯ááºáááºá ááá¯á¡áá»áááºááœáẠáá»áœááºá¯ááºááẠá¡ááŸá®á¡ááá¯áááºážáá±á¬ áá¯áá±ááá¡ááœáẠááá·áºááºáá»á¬ážáᬠáá»ááºááŸááá±á¬á·ááẠá
áááºááŸá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡ááŒá±á¡áá± áá¯á¶á¥ááá¬
áá±á·áá¬áááºááá·áºááºáá»á¬áž
Kubernetes- á áá áºááá·áºááœááºážááŸá¯ Kubernetes - áááºáá²áá±á¬áááºážáááºáž Kubernetes- áá®áá®áá®ááẠGCP- Kubernetes á¡ááºáá»áẠá Kubernetes á á¬á¡á¯áẠKubernetes ááᯠá¡áá¯á¶ážááŒá¯á ááŒáá·áºáá±áá¬ážáá±á¬ á¡ááá¯á¡áá»á±á¬ááºá áá Ạáá®áá®áá®áááºááá Ạá Callisto GitHub TechClub (Callisto) áá±ážáá«
á¡áá¬ážáá°áááááá¬áá»á¬áž
7. Code (IaC) á¡ááŒá Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á
áááºážááá¬á¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº
ááá¯áá»áœááºá¯ááºááá¯á·áá±á¬ááºáá¯á¶ážá¡ááá¯ááºážááá¯áá±á¬ááºáá«ááŒá®á áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá á€áááºážááá¬ááŸáá·áº áááºá ááºá¡áá¯ááºáá»á¬ážááẠautomation á¡ááºáá»ááºáá®áá¬áá»á¬ážá áá¬áááºááá¯ááºáá«á ááŒá®ážáá±á¬á· áá®á¡ááœáẠá¡ááŒá±á¬ááºážááŒáá»ááºááœá± ááŸááááºá ááááŠážá áœá¬á á¡ááœá²á·á¡á ááºážáá»á¬ážá áœá¬ááœáẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáá¬ááŒá¿áá¬áá»á¬ážááẠDevOps áá¬ááááááºážáá»á¯ááºááŸá¯á¡á±á¬ááºááœááºááŸáááŒá®áž ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá¡ááœá²á·áá»á¬ážááẠááá¯ááºááá¯ááºážááá¯áááºááá¯á·áá¯ááºáá±á¬ááºá á±áááºááŸáá·áº áááºážááŸáá·áºáá»áááºáááºáá¬ážááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºáá²á·ááá¯á·áá¶á·ááá¯ážáá±ážááááºááᯠá¡ááŸááºááááºááá¯áá áá¯ááºáá«á áá¯áááá¡áá±áá²á· ááá¯ážááá¯ážáá¬ážáá¬ážááŒá±á¬áááẠInfrastructure as Code (IaC) ááᯠáá¯áá¹ááá®áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážááŸá¬ áááºáá¶áá»áá·áºáá¯á¶ážáá±ááŒáá¯ááºážáá«áá²á ááá¯á·áá±á¬áº áááºážááẠáá±áááºážá á¬ážáá±á¬áááºážááŒá±á¬ááºážáá áºáá¯ááŒá áºáá¬ááŒá®áž áááºážááŸáá·áºáááºá ááºáá±áá±á¬ áá¯ááºáááºážá ááºáá»á¬ážá áá»ááºážáááºááŸá¯áá»á¬ážááŸáá·áº áááááá¬áá»á¬ážááœáẠáá«áááºáááºááŒáá¯ážá á¬ážááẠá¡áá±ážááŒá®ážáá«áááºá á¡áááºážáá¯á¶ážáá±á¬á· áá±á¬ááºáá¯á¶ážáá±á«áºáá±áá«á
á€áááºážáááºážááá¯á¡áá¯á¶ážááŒá¯ááẠááŸá¯á¶á·áá±á¬áºááŸá¯ááŒáá·áº á áááºááŒáá«á áá¯á·á GitlabCI ááœáẠá ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá Gitlab Runner ááᯠrun áááºá¡ááœáẠá¡áááºážáá¯á¶áž á¡áááºážá¡ááŒá áºáá»á¬áž ááá¯á¡ááºááẠááŒá áºááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· ááœá±ážááœá±ážáá¬ážááŒá®ážááŒá áºáááºá ááá±á¬ááºáá¬/emulator áá»á¬ážááŒáá·áº ááœááºááááºáá¬áá»á¬ážááᯠááœáá·áºáááºá VM ááá¯á·ááá¯áẠá¡á á¯á¡áá±ážáá áºáá¯ááᯠááŒáá¯áááºáá¬ážááẠááá¯á¡ááºáááºá á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá ááºážáááºááŒááºážá¡ááŒááºá áá±áá¬áá±á·á áºáá»á¬ážá á¡ááá¯á¡áá»á±á¬ááºá¡áá»áááºááá¬ážáá»á¬ážá ááœááºáááºááœá²á·á ááºážáá¯á¶áá»á¬ážá áááºáá»áááºááœááºáá»áŸá¬áá»á¬ážá á¡áá¯á¶ážááŒá¯áá°á¡ááœáá·áºá¡áá±ážáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážáá«áááºáá±á¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á á¡ááá·áºááŒáŸáá·áºáááºááŸá¯á áá¯ááºáá¯ááºááŸá¯áááºáááºážáá»ááºáá»á¬ážááᯠáá¶á·ááá¯ážááẠá áœááºážáááºáá»á¬ážá áœá¬ ááá¯á¡ááºáá«áááºá á¡ááá ááá±á¬á· á¡á¬ážáá¯á¶ážááá¯ááºážáááºážáá°áá® áá¶á·ááá¯ážáá±ážááá¯á· ááá¯áá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒá¯áá¯ááºááá¯ááºááŒá®áž á¡ááºááááºáá»á¬ážááᯠáá¯ááºáá±ážááá¯ááºááá·áº áááºážáááºážáá»á¬ážá áœá¬ááŸááá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá GCP áá¡ááŒá±á¡áá±ááœááºá áá»áœááºá¯ááºááá¯á·ááẠááá±á¬ááºáá¬ááŸá UI ááœááºááá¯ážááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž ááá¯ááºáá»á¬ážááá¯ááŸáááºááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºááá¯ááºáááºá á¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá áºáá¯ááŸá¬ cloud entities áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááẠAPI áá±á«áºááá¯ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºáž ááá¯á·ááá¯áẠááá¯áá»ááºáá±á¬ááŒááºááŸááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠgcloud command line utility ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒá áºáááá·áºáááºá ááá¯á·áá±á¬áº á¡ááŸááºáááẠáá»á¬ážááŒá¬ážáá±á¬ á¡á áááºá¡ááá¯ááºážáá»á¬ážááŸáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠá¡á áááºá¡ááá¯ááºážáá»á¬ážááŸáá·áºá¡áá°á áá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážááᯠááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºááẠáááºáá²ááẠááá¯á·ááá¯ááºááẠáááŒá áºááá¯ááºáá±á ááá¯á·á¡ááŒááºá á€áááºá áœá²áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááááºážáá»á¯ááºááááá«á ááá¯ááºáá±á¬ááºáá® áááºážááá¯á·ááᯠááŒááºáááºáá¯á¶ážáááºáááºá áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á áá áºááᯠá¡áá¯á¶ážááŒá¯áᬠá¡ááŒá áºá¡áá»ááºááá¯á· áŠážáááºááœá¬ážáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡ááŒááºááŒááºááŸááºááááá«á ááá¯ááá¯á·áá±á¬ááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážáááºá¡ááœáẠá¡ááºáá»ááºáá®áá¬áá»á¬ážááẠáá¯ááºáá¯á¶ážáá¯ááºáááºážáá¯á¶á á¶á¡ááá¯ááºáž áá»ááºááŒááºá áœá¬áááºáááºá áá¬ážáááºáááºá ááááºážááááºážáááºááŸáá·áº ááŒááºáááºááẠáááœááºáá°áá±á¬ááŒá±á¬áá·áº ááááºáááºážáááºážáá»á¬ážááẠáá»á¬ážá áœá¬áá¬ááœááºááŒááºážáááŸáááá·áº á¡ááá¯á¡áá»á±á¬áẠbash/shell script áá»á¬ážááᯠá¡ááºáá»ááºáá®áá¬áá»á¬ážá áááºáá®ážáááºáá®ážáá±ážáá«áááºá
á€áá±á¬ááºážáá«ážááŸáá·áº áá¯ááºáááºážáááºážááœáŸááºááœáẠIaC á¡áá±á·á¡áá»áá·áºááŸáá·áºáááºááá¯ááºáá±á¬ áááááᬠá áá¯ááᯠáá»áœááºá¯ááºá¡áá¯á¶ážááŒá¯áá«áááºá áááºážááá¯á·ááẠTerraform ááŸáá·áº Ansible ááá¯á·ááŒá áºáááºá áááºážááá¯á·á áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááẠáááºáá°ááŒá®áž áááºážááá¯á·ááẠá¡ááŒááºá¡ááŸááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááᯠáá áºáá»áááºáááºážááœáẠá¡áá¯á¶ážááŒá¯ááŒááºážááẠá¡áááá¹áá«ááºáááŸááᯠá¡áá»áá¯á·á áá¯á¶ááŒááºááŒáááºá ááá¯á·áá±á¬áº á¡ááŸááºááŸá¬ á¡á ááá¯ááºážááœáẠáááºážááá¯á·ááᯠáá¯á¶ážáááŒá¬ážáá¬ážáá±á¬ áá¬áááºáá»á¬ážááᯠáá±ážáá¬ážáááºá ááá¯á·á¡ááŒáẠá¡ááá¯áá«áááááá¬áá»á¬ážááẠáá áºáá¯ááŸáá·áºáá áºáᯠááŒáá·áºá áœááºááá·áºáááºáá°áá±á¬á¡áá»ááºááᯠHashiCorp ááŸáá·áº RedHat ááá¯ááºá á¬ážááŒá¯ developer áá»á¬ážá áá°ážááœá²áááºáááºááŸá¯ááœáẠá¡áááºááŒá¯áá²á·áááºá á¡áá°á¡áááœá²ááŒá¬ážááŸá¯ááŸá¬ Terraform ááẠáá¬áá¬áá»á¬ážááᯠáááºážááá¯á·ááá¯ááºááá¯áẠá á®áá¶ááá·áºááœá²áááºá¡ááœáẠá á®áá¶áá±á¬ááºááœááºáá±ážááá·áºáááááá¬áá áºáá¯ááŒá áºáááºá Ansible ááẠá€áá¬áá¬áá»á¬ážáá±á«áºááœáẠáá±á¬á·ááºáá²ááºááᯠááá·áºááœááºážáááºá ááŒááºáááºáááºááŸááºáááºááŸáá·áº á á®áá¶ááá·áºááœá²áááºáá¬áááºááŸáááá·áº á á®áá¶ááœá²á·á ááºážááŸá¯á á®áá¶ááá·áºááœá²ááŸá¯áááááá¬áá áºáá¯ááŒá áºáááºá
á€áááááá¬áá»á¬ážá áá±á¬ááºáááºáá°ážááŒá¬ážáá»ááºááŸá¬ áá¯ááºáá±ážáááºážááŒá áºáááºá bash ááŸáá·áº Ansible ááá¯á·ááŸáá·áºááá°áá²á Terraform ááẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááááºá¡ááŒá Ạá¡á±á¬ááºááŒááºá á±áááºá¡ááá¯ááŸááá±á¬á¡áá¯á¶ážá¡ááŒá±á¡áá±áá±á¬áºááŒáá»ááºá¡áá±á«áºá¡ááŒá±áá¶á ááŒá±ááŒá¬á ááá¯ááºááá¯á¡áá¯á¶ážááŒá¯áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠ10 VM ááá¯áááºáá®ážááŒá®áž Terraform ááŸáááá·áºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áá«áá áá»áœááºá¯ááºááá¯á·ááẠ10 VM ááá¯áááŸááááºááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá¬ááºááœáŸááºážááᯠáááºáá¶áá¯ááºáá±á¬ááºáá«áá áá»áœááºá¯ááºááá¯á·ááœáẠVM 10 áá¯ááŸáááŒá®ážááŒá áºáá±á¬ááŒá±á¬áá·áº áááºááá·áºá¡áá¬áá»áŸ ááŒá áºáá¬áááºááá¯ááºááŒá±á¬ááºážááŸáá·áº Terraform ááẠáááºážááẠááŒááºáááºááá¯ááºáá áºáá¯ááœáẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá áááºááŸáá¡ááŒá±á¡áá±á¡á¬áž ááááºážáááºážáá¬ážáá±á¬ááŒá±á¬áá·áº áááºážááᯠááááŸááá«áááºá ááá¯á·áá±á¬áº Ansible ááẠáá¯ááºáá¯á¶ážáá¯ááºáááºážáá»ááºážáááºáááºážááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž VM 10 áá¯áááºáá®ážáááºáá±á¬ááºážááá¯áá«áá ááá¯á·áá±á¬ááºáááá¡ááŒáááºááœáẠTerraform ááŸáá·áºáááºáá°ááá·áº VM 10 áá¯ááá¯áá»áœááºá¯ááºááá¯á·áááŸááááºááŒá áºáááºá ááá¯á·áá±á¬áº ááŒááºáááºá áááºááŒá®ážáá±á¬áẠáá»áœááºá¯ááºááá¯á·ááœáẠVM 20 ááŸáááŸáá·áºááŒá®ážááŒá áºáááºá áá«á á¡áá±ážááŒá®ážáá²á· ááŒá¬ážáá¬ážáá»ááºáá«á áá¯ááºáá¯á¶ážáá¯ááºáááºážáá¯á¶á á¶ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáááºááŸáá¡ááŒá±á¡áá±á¡á¬áž ááááºážáááºážááŒááºážáááŒá¯áá² áá¯ááºáá±á¬ááºáááá·áºá¡ááá·áºáá»á¬áž á¡ááá·áºááá·áºááᯠááá¯ážááá¯ážááŸááºážááŸááºážáá±á¬áºááŒáá«áááºá áá¯ááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ á¡ááŒá±á¡áá±áá»á¬ážááᯠááá¯ááºááœááºááá¯ááºááŒá®áž á¡áááºážá¡ááŒá áºáá»á¬ážáááºááŸáááŸá¯ááŸáá·áº áááºááŸáá¡ááŒá±á¡áá±á¡ááœáẠá á áºáá±ážááŸá¯áá»á¬ážá áœá¬ááᯠááá·áºááœááºážááá¯ááºáá±á¬áºáááºáž áá»áœááºá¯ááºááá¯á·áá¡áá»áááºááᯠááŒá¯ááºážáá®ážáᬠá€áá¯áá¹ááááᯠááááºážáá»á¯ááºááẠá¡á¬ážá áá¯ááºáá¯ááºááŒááºážááŸá¬ á¡áááá¹áá«ááºáááŸááá«á ááá¯á·á¡ááŒááºá áááºážááẠá¡ááŸá¬ážáá¯ááºááááá¯ááºááŒá±ááᯠááá¯ážá á±áááºá
á¡áááºáá±á¬áºááŒáá« á¡á¬ážáá¯á¶ážááᯠá¡áá»ááºážáá»á¯ááºá¡á¬ážááŒáá·áºá Terraform ááŸáá·áº declarative notation áá»á¬ážááẠáá¬áá¬áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááºá¡ááœáẠááá¯ááá¯ááá·áºáá»á±á¬áºáá±á¬ áááááá¬áá áºáá¯ááŒá áºááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· áá±á¬ááºáá»ááºáá»ááá¯ááºáá«áááºá áá«áá±ááá·áº Ansible áá²á· configuration management á¡áá¯ááºááᯠááœáŸá²á¡ááºáá¬á ááá¯áá±á¬ááºážáá«áááºá á¡á²áá«á¡ááŒááºá á¡ááá¯á¡áá»á±á¬ááºá áá áºáá²á· áááºá ááºááŸá¯ááŸá¬ á¡áá¯á¶ážááŒá¯ááŸá¯ááá á¹á ááœá±ááᯠááŒáá·áºááŒáá¡á±á¬ááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
á€áá±áá¬ááœáẠáá¬ážáááºááẠá¡áá±ážááŒá®ážáá±á¬á¡áá»ááºááŸá¬ á ááºážáááºááŸá¯ á¡ááá¯á¡áá»á±á¬ááºá áá Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáá¯áá¹ááá®á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯áá¯á¶ážá áá áºá áááºáá áºááá¯ááºážá¡ááŒá Ạááá·áºááœááºážá ááºážá á¬ážááá·áºáááºá ááá¯ááá¯áááºááŸá¬ IaC á¡áá±á·á¡áá»áá·áºá¡á¬ážáá¯á¶ážááᯠá¡ááœá²á·á¡á ááºážáá áºáá¯áá¯á¶ážá á¡áááºážá¡ááŒá áºáá»á¬ážááœáẠáá áºááá¹áá¬áá¯á¶ážá¡ááá¯ááºážá¡áá¬ááŒáá·áº á¡áá¯á¶ážáá»ááááºááŒá áºáááºá áá®á¡ááœáẠáááºáá°á áá¬áááºáá°ááá² ááá¯áᬠáááºážáá²á· áá¯ááºáááºážá ááºááœá±áá±á«áºááŸá¬ áá°áááºáááºá DevOps á¡ááœá²á·ááẠá€ááŒá¿áá¬áá»á¬ážááœáẠááá¯ááá¯á¡ááœá±á·á¡ááŒá¯á¶ááŸáááŒá®áž ááŒá áºáá»ááºáá±ááá·áºáá¯á¶áá áºáá¯áá¯á¶ážááᯠááŒááºáááºá ááá¯á·áá±á¬áºá QA á¡ááºáá»ááºáá®áá¬áá»á¬ážááẠá¡ááá¯á¡áá»á±á¬ááºá áá áºáááºáá±á¬ááºááŒááºážááŸáá·áº ááá¯ááºááá¯ááºážáááºáá±á¬ááºááŸá¯áá¯ááºáááºážá ááºáá»á¬ážááœáẠááá¯ááá¯áá«áááºáá¬áá±á¬ááŒá±á¬áá·áº ááá¯á¡ááºáá±á¬ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááŸáá·áº ááá¯ážáááºááŸá¯á¡ááœáẠá¡ááœáá·áºá¡áááºážá¡á¬ážáá¯á¶ážááᯠááá¯ááá¯áá±á¬ááºážááœááºá áœá¬ááŒááºááá¯ááºá á±áá«áááºá á¡áá±á¬ááºážáá¯á¶ážááœá±ážáá»ááºááŸá¯ááŸá¬ áá»áŸá±á¬áºááŸááºážáá¬ážááá·áºááááºááá¯áááŸáááẠá¡áá°áááœáá¯ááºáá±á¬ááºáááºá á¡ááááá¬ááŸáá·áº á¡ááŒá¶á¥á¬ááºáá»á¬ážáááŸááºáááºááŒá áºáááºá
á ááºážáááºááŸá¯ á¡ááá¯á¡áá»á±á¬ááºá áá áºááŸáá·áº ááŸá±á·ááœáẠááœá±ážááœá±ážáá²á·ááá·áº áááááá¬áá»á¬ážá¡ááŒá±á¬ááºážááœáẠTerraform ááŸáá·áº Ansible ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá ááá°áá¬á¡áá»áá¯á·ááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááº-
1. Terraform ááᯠá¡áá¯á¶ážááŒá¯á VM áá»á¬ážááŸáá·áº á¡á á¯á¡áá±ážáá»á¬ážá ááá¯á¡ááºáá±á¬ áááá±áááá¹ááá¬áá»á¬ážááŸáá·áº ááá·áºáááºáá»ááºáá»á¬ážááᯠáá±á¬áºááŒáá«á
2. Ansible ááᯠá¡áá¯á¶ážááŒá¯á á ááºážáááºáááºá¡ááœáẠááá¯á¡ááºáá±á¬ áááááá¬áá»á¬ážááᯠáááºáááºáá«- dockerá Selenoidá Selenium Grid ááŸáá·áº browsers/emulator áá»á¬ážá ááá¯á¡ááºáá±á¬áá¬ážááŸááºážáá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºáá«á
3. Terraform ááá¯á¡áá¯á¶ážááŒá¯á GitLab Runner ááá¯á áááºááá·áº VM ááááá±áááá¹ááá¬áá»á¬ážááá¯áá±á¬áºááŒáá«á
4. Ansible ááᯠá¡áá¯á¶ážááŒá¯á GitLab Runner ááŸáá·áº ááá¯á¡ááºáá±á¬ ááœá²áááºáááááá¬áá»á¬ážááᯠááá·áºááœááºážáá«á áááºáááºáá»á¬ážááŸáá·áº áá¯á¶á á¶áá»á¬ážááᯠáááºááŸááºáá«á
áááºááŸá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡ááŒá±á¡áá± áá¯á¶á¥ááá¬
áá±á·áá¬áááºááá·áºááºáá»á¬áž-
Terraform ááŒááºáááá°áž Ansible ááŸáá·áº Terraform ááá¯á·ááẠá¡áá°ááᜠááá¯áá±á¬ááºážáááºá Terraform á¡ááœáẠááŒáá·áºá á¯á¶áá±á¬ áááºážááœáŸáẠáá»áœááºá¯ááºááá¯á· áá¬ááŒá±á¬áá·áº Terraform ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž Chefá Puppetá Ansibleá SaltStack ááá¯á·ááá¯áẠCloudFormation ááᯠáá¬ááŒá±á¬áá·áºááá¯á¶ážáá¬áá²á GCP- IaC
á¡áá¬ážáá°áááááá¬áá»á¬áž
á¡ááŸá áºáá»á¯ááºáá¡á±á¬ááºá
ááŸááºáž
áááºážááá¬
Tools áá»á¬áž
á¡ááá¯á¡áá»á±á¬ááºá
áá
áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºááá¯áž
1
ááŒááºááœááºážááŒá±áž
Node.jsá Seleniumá Appium
- áááºááŸáá·áº ááá¯ááá¯ááºážá¡ááœáẠáá±áááºážá¡á á¬ážáá¯á¶áž áááááá¬áá»á¬áž
- áá¬áá¬á áá¬ážáá»á¬ážááŸáá·áº ááááºáá±á¬ááºážáá»á¬ážá áœá¬ááᯠáá¶á·ááá¯ážáá±ážááẠ(Node.js á¡áá«á¡áááº)
2
áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á
áá
áºáá»á¬áž
git
- ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºááŸáá·áºá¡áá° á¡áá¬ážáá°á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬áž
3
Containerization
Dockerá Selenium gridá Selenoid (áááºá Android)
- á á¬áá±ážááœá²áá»á¬áž ááŒáá¯ááºáá°áá¯ááºáá±á¬ááºááŒááºážá
- áá®ážááŒá¬ážáááºáááºážáá»ááº
- ááá¯ážááŸááºážááŒá®áž ááŒá±á¬ááºážááœááºááŒááºááœáẠáá¬ážááŸááºážááœááºážáá¶ááŸá¯áá»á¬áž
- á¡áá¯á¶ážáááŒá¯áá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡ááºááá¯ááºá¡á¬ážááá¯áẠáááºááá·áºááŒááºážá
- áááºáááºáááºááœááºáá°áááº
4
CI/CD
Gitlab CI
- ááá¯ááºááá¯ááºážá á¡á áááºá¡ááá¯ááºážááᯠá ááºážáááºáááºá
- á¡ááŒááºáá¯á¶á·ááŒááºáá»ááº
- áá¯áá¹ááá®/á¡ááœá²á·áá áºáá¯áá¯á¶ážá¡ááœáẠááŒááºááá¯ááºááŸá¯
5
Cloud ááááºáá±á¬ááºážáá»á¬áž
áá°áááºááºááááºááá¯ááºááááºáá±á¬ááºáž
- áááºááá¯á¡á¬ážááŸá á¡áááºážá¡ááŒá áºáá»á¬áž (ááá¯á¡ááºááŸáᬠáá±ážáá±á¬ááºááááº)
- á á®áá¶ááá·áºááœá²áááºááŸáá·áº á¡ááºááááºáá¯ááºááẠááœááºáá°áááºá
- á¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠááŒááºááá¯ááºá áœááºážááŸáá·áº ááááºážáá»á¯ááºááŸá¯
6
orchestration
Kubernetes
pods áá»á¬ážá¡ááœááºážááá±á¬ááºáá¬/emulator áá»á¬ážáá«ááŸááá±á¬ááœááºááááºáá¬áá»á¬ážáá¡ááŒá±á¡áá±ááœááº-
- á¡ááá¯ááºážá¡áá¬/á¡ááá¯á¡áá»á±á¬áẠáá»áááºááŸáááŒááºážá
- ááááááá¯ááºááᯠáá¯á á¬ážááŒááºážá
- á¡ááŸá±á¬áá·áºá¡ááŸááºáááŸááá² á¡ááºááááºáá»á¬ážááŸáá·áº ááŒááºááŸáá·áºááŒááºážáá»á¬áž
7
áá¯áẠ(IaC) á¡ááŒá
Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ
Terraformá Ansible
- ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááŸáá·áº á¡áá¬ážáá° á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬áž
- áá¯ááºáá¬ážááŸááºážááŒá±á¬ááºážááŒááºážá á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážá¡á¬ážáá¯á¶áž
- ááŒá¯ááŒááºááŒá±á¬ááºážáá²áááºááŸáá·áº ááááºážááááºážááẠááœááºáá°áááºá
- á¡ááŒáá·áºá¡áá¡ááá¯á¡áá»á±á¬ááº
á áááºááŒá±áá¯á¶áá¬ážáá»ááºáá»á¬áž- á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážá ááá·áºáá²ááŒá áºá ááº
á¡ááá·áº 1- ááŒááºááœááºáž
á¡ááá·áº 2- VCS
á¡ááá·áº 3- ááá¯ááŸá±á¬ááºááŒááºáž
á¡ááá·áº 4- CI/CD
á¡ááá·áº 5- Cloud ááááºáá±á¬ááºážáá»á¬áž
á¡ááá·áº 6: áá®ážááŸá¯ááºááŒááºážá
á¡ááá·áº 7- IaC
áá¬áááºá·áá¬áá²?
áá®áá±á¬á· áá®áá±á¬ááºážáá«ážáá²á· á¡áá¯á¶ážáá«á áá«áá±ááá·áº áááá¯á¶ážáá»á¯ááºá¡áá±áá²á· áááºážáá²á· ááá±á¬áá°áá®áá»ááºááá»áá¯á·ááᯠáá»ááŸááºáá»ááºáá«áááºá
áááºážáááºááá±
á¡á
ááŸá¬ááŒá±á¬áá²á·áááá¯áá² áá±á¬ááºážáá«ážááᯠáááºááœá±á·á¡áá¯á¶ážáá»ááŒá®áž áááºááœá±á·áá¯ááºáááºážááœááºááŸá¬ ááá¬áá²á· ááá¯áá¯áááœá±ááᯠá¡áá¯á¶ážáá»ááá¯ááºá¡á±á¬áẠáá°áá®áá±ážáá»ááºáá«áááºá áááºááá·áºááá¯ááºáááºá
áá«áá±ááá·áº á¡á²áá®áá±á¬ááºááŸá¬áá±á¬áẠáááºááá±áá«áá²á·á áá±á·áá»áá·áºáá«á áááºááá¯ááºáᬠááá·áºááºááœá±áá²á· á á¬á¡á¯ááºááœá±ááᯠáá±á·áá¬áá«á ááá·áºáá¯áá¹ááá®ááŸá¬ áááºááá¯á¡áá¯ááºáá¯ááºáá²ááá¯áá¬ááᯠááŸá¬ááœá±áá«á ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááá¯ááºáá²á· áá±áá¬ááœá±ááᯠááŸá¬ááœá±ááŒá®áž áááºážááŸá¬ áá«áááºááá¯ááºáá«á áá¶áá±á¬ááºážáá«á á±!
áá«á·áááºááŸá¬
áá±á«ááºážá ááºááá± áá«á áááááá¯ááºážáá²ááá¯á· ááŒááºáááºá á¡áá±á¬áºáá±áž ááŒá®ážáá¬áá±ááá·áº á¡áá±ážááŒá®ážáá²á· á¡ááŒá±á¬ááºážá¡áá¬ááœá±ááᯠáá®áá±áá¬ááŸá¬ áááŒá¯á¶áá¯á¶áááá±ážáá«áá°ážá áá¯áááá¡ááá¯ááºážááœááºá IOS áá¡ááŒá±á¡áá±ááœáẠautomation infrastructure ááá¯ááŒáá·áºááŸá¯áááºá á®á ááºáá¬ážáááºá macOS á áá áºáá»á¬ážááœááºáᬠiOS simulators áá»á¬ážá¡áá¯á¶ážááŒá¯ááŒááºážá¡áá±á«áº Apple áááá·áºáááºáá»ááºáá»á¬ážááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºá¡ááœá¬á¡áá±ážááẠáá»ááºážááŒá±á¬ááºážááœá¬ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠvirtual machines áá»á¬ážááá¯áááºáááºááẠSimulator ááá¯á·ááá¯áẠpublic clouds ááᯠrun ááẠDocker ááᯠá¡áá¯á¶ážáááŒá¯ááá¯ááºáá«á áá«áá±ááá·áº áá«á áááŒá¬ážááœá±ážáá»ááºá áá¬ááœá±áááŸááá°ážááá¯á· áááá¯ááá¯áá«áá°ážá á¡ááá·áºááŒáá·áºááŒá±ááŸááºážáááºážáá»á¬ážááŸáá·áº áá±ááºáá®áááááá¬áá»á¬ážááŒáá·áº ááá·áºá¡á¬áž áá±ááºáá®á á±ááẠááŒáá¯ážá á¬ážáá«áááºá
ááá¯á·á¡ááŒáẠá á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº áááºáááºááá·áº ááŒá®ážáá¬ážáá±á¬ á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá»áœááºá¯áẠááá±á¬áºááŒáá²á·áá«á á¡ááá¯ááºáž 3 ááœááºá áá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á á±á¬áá·áºááŒáá·áºáá±ážáááááá¬áá»á¬ážááŸáá·áº áááºááá·áºáá±áá¬ááŸáá·áº ááá¯ááºážáá¬ááŸá¯áá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážááááºááᯠááŒáá·áºááŸá¯áá«áááºá
áá±á¬ááºáá¯á¶ážáá±á¬á·á á¡áá¬áááºááœááºá á ááºážáááºááŸá¯á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááŸáá·áº áá°ááŒáá¯ááºáá»á¬ážáá±á¬áááááá¬áá»á¬ážáááºáá±á¬ááºááŒááºážááá¯ááºáᬠáá®áá®ááá¯áááºáááºážááᯠáá¯ááºááŒááºááẠá á®á ááºáá¬ážáá«áááºá áááºááŸáááœááºá á¡ááºáá¬áááºáá±á«áºááŸá DevOps ááœáẠáááºáááºážáá»á¬ážááŸáá·áº ááá¯á·áá»áá»ááºá¡áááºážáááºáá¬ááŸááá±á¬áºáááºáž áá á¹á ááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá ááºážáááºááŸá¯á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážááá¯ááºáá² ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááŒá±á¡áá±ááœáẠáááºááŒáá¬ážáááºá á€ááŒá¿áá¬á¡ááœááºá ááá¯ááá¯á·áá±á¬áááºáááºážááẠá ááºážáááºáá°áá»á¬ážááŸáá·áº á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááºáá»ááºáá®áá¬á¡ááá¯ááºážá¡ááá¯ááºážá¡ááœáẠá áááºáááºá á¬ážá áá¬áá±á¬ááºážááŒá®áž á¡ááá¯ážáááºáááºáá¬ážáá°ááá·áº á¡ááŒá¶ááŒá¯áá»ááºááá¯á¡ááºáá«áááºá ááŒáá¯áááºááŒá®ážáá»á±ážáá°ážáá«áá²!
source: www.habr.com