Anzeige
Anzeige

Más contenido relacionado

Similar a Meet the Forge Runtime(20)

Anzeige

Más de Atlassian(20)

Anzeige

Meet the Forge Runtime

  1. SHORYA RAJ | SOFTWARE ENGINEER | ATLASSIAN | @SHAZZA Meet the Forge runtime AWS Lambda, Atlassian Runtimes, and the features we provide
  2. AWS Lambda Runtime Atlassian Runtime Features Agenda
  3. AWS Lambda Runtime Atlassian Runtime Features Agenda
  4. Runtime Layers Diving into AWS Runtime Layers AWS Lambda Runtimes Runtime Contract The contract a custom runtime must fulfil AWS Lambda What is Lambda?
  5. Runtime Layers Diving into AWS Runtime Layers AWS Lambda Runtimes Runtime Contract The contract a custom runtime must fulfil AWS Lambda What is Lambda?
  6. Functions as a Service “Just right the business logic” AWS Lambda Customizable Through runtime layers Managed Compute Provisioning, Scaling, Ops
  7. Functions as a Service “Just right the business logic” AWS Lambda Customizable Through runtime layers Managed Compute Provisioning, Scaling, Ops
  8. Functions as a Service “Just right the business logic” AWS Lambda Customizable Through runtime layers Managed Compute Provisioning, Scaling, Ops
  9. Runtime Layers Diving into AWS Runtime Layers AWS Lambda Runtimes Runtime Contract The contract a custom runtime must fulfil AWS Lambda What is Lambda?
  10. Runtime Layers Diving into AWS Runtime Layers AWS Lambda Runtimes Runtime Contract The contract a custom runtime must fulfil AWS Lambda What is Lambda?
  11. Composable Up to 5 layers Runtime Layers Contributes to shared resource contraints Custom Execution Environment 001
  12. Composable Up to 5 layers Runtime Layers Contributes to shared resource contraints Custom Execution Environment 001
  13. Composable Up to 5 layers Runtime Layers Contributes to shared resource contraints Custom Execution Environment 001
  14. Runtime Layers Diving into AWS Runtime Layers AWS Lambda Runtimes Runtime Contract The contract a custom runtime must fulfil AWS Lambda What is Lambda?
  15. Runtime Layers Diving into AWS Runtime Layers AWS Lambda Runtimes Runtime Contract The contract a custom runtime must fulfil AWS Lambda What is Lambda?
  16. Runtime Contract AWS API Lambda Runtime Layer (webserver) Other Layers (runtime core) Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute };
  17. Runtime Contract AWS API FETCH Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute }; Lambda Runtime Layer (webserver) Other Layers (runtime core)
  18. Runtime Contract AWS API FETCH INVOKE Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute }; Lambda Runtime Layer (webserver) Other Layers (runtime core)
  19. Runtime Contract AWS API FETCH INVOKE Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute }; Lambda Runtime Layer (webserver) Other Layers (runtime core)
  20. Runtime Contract AWS API Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute }; FETCH INVOKE Lambda Runtime Layer (webserver) Other Layers (runtime core)
  21. Runtime Contract AWS API Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute }; FETCH INVOKE SUCCESS Lambda Runtime Layer (webserver) Other Layers (runtime core)
  22. Runtime Contract AWS API Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute }; FETCH INVOKE SUCCESS FUNCTION ERROR Lambda Runtime Layer (webserver) Other Layers (runtime core)
  23. Runtime Contract AWS API Developer Code function execute() { return { message: 'hello world!' } } module.exports = { execute }; FETCH INVOKE SUCCESS FUNCTION ERROR LAMBDA ERROR Lambda Runtime Layer (webserver) Other Layers (runtime core)
  24. AWS Lambda Runtime Atlassian Runtime Features Agenda
  25. AWS Lambda Runtime Atlassian Runtime Features Agenda
  26. FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  27. Secure FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  28. Secure Seamless FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  29. Secure Seamless Responsive FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  30. Secure Seamless Responsive FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  31. Easy to useSecure Seamless Responsive FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  32. Easy to use Easy to run Secure Seamless Responsive FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  33. Easy to use Easy to run Powerful Secure Seamless Responsive FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  34. Easy to use Easy to run Powerful Secure Seamless Responsive FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS
  35. Easy to use Easy to run Powerful Secure Seamless Responsive FEATURES FOR CUSTOMERS FEATURES FOR DEVELOPERS FEATURES FOR ALL
  36. Features Isolates Auth Handling Context Handling Tunneling
  37. Features Isolates Auth Handling Context Handling Tunneling Security Isolates have a similar security model to iframes
  38. Features Isolates Auth Handling Context Handling Tunneling Security Isolates have a similar security model to iframes Tenant/Context Isolation Isolates are thrown away after each invocation, so there is a “clean” for each invocation.
  39. Features Isolates Auth Handling Context Handling Tunneling Security Isolates have a similar security model to iframes Tenant/Context Isolation Isolates are thrown away after each invocation, so there is a “clean” for each invocation. We control what you have access to globals and API’s are provided to the isolate, so can control what they do (e.g. blocking network egress)
  40. Features Isolates Auth Handling Context Handling Tunneling
  41. Features Isolates Auth Handling Context Handling Tunneling API.Fetch We provide an API that handles making fetch requests out of the isolate.
  42. const xkcdResponse = await api .fetch(‘https://xkcd.com/'); Auth Handling API.Fetch
  43. Features Isolates Auth Handling Context Handling Tunneling API.Fetch We provide an API that handles making fetch requests out of the isolate.
  44. Features Isolates Auth Handling Context Handling Tunneling API.Fetch We provide an API that handles making fetch requests out of the isolate. Automatic Token Injection Injects tokens as requested into requests. Hides developer having to see tokens/secrets
  45. Auth Handling API.Fetch Token injection const xkcdResponse = await api .fetch(‘https://xkcd.com/');
  46. Auth Handling API.Fetch Token injection const watchersResponse = await api .asApp() .fetch(`https://api.atlassian.com/ex/ confluence/${cloudId}/content/$ {contentId}/watchers`);
  47. Auth Handling API.Fetch Token injection const watchersResponse = await api .asApp() .fetch(`https://api.atlassian.com/ex/ confluence/${cloudId}/content/$ {contentId}/watchers`); const resp = await api.fetch( 'https://api.github.com/user/repos', { headers: { Authorization: 'token {github}' }, });
  48. Features Isolates Auth Handling Context Handling Tunneling API.Fetch We provide an API that handles making fetch requests out of the isolate. Automatic Token Injection Injects tokens as requested into requests. Hides developer having to see tokens/secrets
  49. Features Isolates Auth Handling Context Handling Tunneling API.Fetch We provide an API that handles making fetch requests out of the isolate. Automatic Token Injection Injects tokens as requested into requests. Hides developer having to see tokens/secrets Auth / Consent Flows Developer doesn’t have to deal with going through the consent flow (for certain OAuth Providers)
  50. Auth Handling API.Fetch Token injection const watchersResponse = await api .asApp() .fetch(`https://api.atlassian.com/ex/ confluence/${cloudId}/content/$ {contentId}/watchers`); const resp = await api.fetch( 'https://api.github.com/user/repos', { headers: { Authorization: 'token {github}' }, });
  51. Auth Handling API.Fetch Token injection Consent Flows const watchersResponse = await api .asApp() .fetch(`https://api.atlassian.com/ex/ confluence/${cloudId}/content/$ {contentId}/child/content`);
  52. Auth Handling API.Fetch Token injection Consent Flows const watchersResponse = await api .asRequestUser() .fetch(`https://api.atlassian.com/ex/ confluence/${cloudId}/content/$ {contentId}/child/content`);
  53. Auth Handling API.Fetch Token injection Consent Flows
  54. Features Isolates Auth Handling Context Handling Tunneling API.Fetch We provide an API that handles making fetch requests out of the isolate. Automatic Token Injection Injects tokens as requested into requests. Hides developer having to see tokens/secrets Auth / Consent Flows Developer doesn’t have to deal with going through the consent flow (for certain OAuth Providers)
  55. Features Isolates Auth Handling Context Handling Tunneling
  56. Features Isolates Auth Handling Context Handling Tunneling Tenant/Context Selection Since we control invocation, we can automatically select and provide the right tenant/context
  57. Features Isolates Auth Handling Context Handling Tunneling Tenant/Context Selection Since we control invocation, we can automatically select and provide the right tenant/context Automatic API handling Since we provide the context and the API, we can hydrate both for you ( .onSite().asUser().takeAction()).
  58. Context Handling const watchersResponse = await api .asRequestUser() .fetch(`https://api.atlassian.com/ex/ confluence/${cloudId}/content/$ {contentId}/child/content`);
  59. Context Handling const watchersResponse = await api .asRequestUser() .requestConfluence(`/content/$ {contentId}/child/content`);
  60. Features Isolates Auth Handling Context Handling Tunneling Tenant/Context Selection Since we control invocation, we can automatically select and provide the right tenant/context Automatic API handling Since we provide the context and the API, we can hydrate both for you ( .onSite().asUser().takeAction()).
  61. Features Isolates Auth Handling Context Handling Tunneling Tenant/Context Selection Since we control invocation, we can automatically select and provide the right tenant/context Automatic API handling Since we provide the context and the API, we can hydrate both for you ( .onSite().asUser().takeAction()). Cross-product context Can incorporate more complicated cross-product cases
  62. Features Isolates Auth Handling Context Handling Tunneling
  63. Features Isolates Auth Handling Context Handling Tunneling Same core runtime The CLI will ship with the same core runtime that the Lambda uses. Your code therefore can behave the same
  64. Features Isolates Auth Handling Context Handling Tunneling Same core runtime The CLI will ship with the same core runtime that the Lambda uses. Your code therefore can behave the same Leverage the tools you are used to You can use whatever tools (e.g. VSCode, Chrome Devtools) you already use to help build and debug
  65. AWS Lambda Runtime Atlassian Runtime Features Agenda
  66. AWS Lambda Runtime Atlassian Runtime Features Agenda
  67. Trusted By Default Atlassian Runtime Custom API Support … not without limitations
  68. Trusted By Default Atlassian Runtime Custom API Support … not without limitations
  69. … means we can add magic Custom API Support … and enforce restrictions Ability to inject our own APIs
  70. … means we can add magic Custom API Support … and enforce restrictions Ability to inject our own APIs
  71. … means we can add magic Custom API Support … and enforce restrictions Ability to inject our own APIs
  72. Trusted By Default Atlassian Runtime Custom API Support … not without limitations
  73. Trusted By Default Atlassian Runtime Custom API Support … not without limitations
  74. Inform the end user Of what the app is doing Trusted By Default Lower risk of developer error We run the code So we have some controls…
  75. Inform the end user Of what the app is doing Trusted By Default Lower risk of developer error We run the code So we have some controls…
  76. Inform the end user Of what the app is doing Trusted By Default Lower risk of developer error We run the code So we have some controls…
  77. Compliance RTBF, SOC2, etc. Trusted By Default Execution Limits More complex integrations Compute + Storage, kept within Atlassian
  78. Compliance RTBF, SOC2, etc. Trusted By Default Execution Limits More complex integrations Compute + Storage, kept within Atlassian
  79. Compliance RTBF, SOC2, etc. Trusted By Default Execution Limits More complex integrations Compute + Storage, kept within Atlassian
  80. Compliance RTBF, SOC2, etc. Trusted By Default Execution Limits More complex integrations Compute + Storage, kept within Atlassian
  81. Trusted By Default Atlassian Runtime Custom API Support … not without limitations
  82. Trusted By Default Atlassian Runtime Custom API Support … not without limitations
  83. Environment different to Node/Browser Runtime ships alongside developer code Atlassian only provides a minimal set Developers can polyfill what they need Limitations
  84. Atlassian only provides a minimal set Developers can polyfill what they need Limitations Environment different to Node/Browser Runtime ships alongside developer code
  85. Atlassian only provides a minimal set Developers can polyfill what they need Limitations Environment different to Node/Browser Runtime ships alongside developer code
  86. Atlassian only provides a minimal set Developers can polyfill what they need Limitations Environment different to Node/Browser Runtime ships alongside developer code
  87. AWS Lambda Runtime Atlassian Runtime Features Recap
  88. Next Steps Booths Come have a chat with us at our booth to learn more! Labs Try out Forge! Schubert 3 Beta! Later this year, please scan the QR code!
  89. SHORYA RAJ | SOFTWARE ENGINEER | ATLASSIAN | @SHAZZA Thank you!
Anzeige