1

Comment créer un site Web sans serveur sur Azure, en tant qu '"application de mise à l'échelle automatique, pay-per-execution, événementielle"?Comment créer un site Web sans serveur sur Azure (plutôt que sur AWS Amazon)

Il existe de très bons exemples de création d'un site Web sans serveur sur AWS Amazon, par ex. https://zanon.io/posts/building-serverless-websites-on-aws-tutorial Il consomme S3 pour HTML et JS, Lambda pour API REST, Simple DB pour les données.

Microsoft a des fonctions Azure analogiques pour AWS Lambda, mais il s'agit d'une "informatique sans serveur" et non d'un "site Web sans serveur". Je peux créer une "API REST sans serveur" avec Azure Functions, mais qu'en est-il de HTML, JS, CSS pour site web, base de données, etc.?

J'ai essayé Azure App Service, mais il lui manque l'option "ne payer que pour ce que vous utilisez", car tous les forfaits ont des paiements mensuels, ainsi que Azure SQL pour la base de données. Et App Service ne semble pas être conçu pour héberger des sites Web sans architecture d'architecture, plus pour les sites Web ASP.NET classiques que vous pouvez facilement déployer ici.

En outre, il est une bibliothèque populaire https://github.com/serverless/serverless et ils ont même mentionné Azure: « en utilisant AWS Lambda, Fonctions Azure, Google CloudFunctions & plus », mais il n'y a pas un seul exemple comment l'utiliser pour Azure et tous Docs sont pour Amazon AWS.

Merci!

+0

Vous pouvez consulter le document suivant pour comparer les services AWS aux services Azure et trouver la correspondance appropriée: https://docs.microsoft.com/en-us/azure/guidance/guidance-azure-for-aws-professionals-service-map –

Répondre

0

Pour le stockage des fichiers statiques, vous pouvez utiliser Azure Storage, qui est comparable à AWS S3: https://blogs.msdn.microsoft.com/make_it_better/2016/08/09/simple-websites-using-azure-storage-blob-service/

Pour le stockage des données - il y a beaucoup d'options, mais si vous êtes à la recherche pour le style NoSQL DB (sous-entendu par vous référence d'AWS SimpleDB), vous pouvez utiliser Azure DocumentDB: https://docs.microsoft.com/en-us/azure/documentdb/documentdb-introduction

Les deux composants sont "sans serveur" et vous facturent au fur et à mesure.

+0

Merci. Votre exemple est "Sites Web simples utilisant Azure Storage Blob Service". Quelques pages html statiques. Pensez-vous que "Azure Storage Blob Service" serait une bonne solution pour un site web compliqué? Par exemple, avec toutes les fonctionnalités stackoverflow.com a. Supposons une application d'une page utilisant AngularJs, avec back-end node.js. – Vasiliy

+1

Je ne pense pas que la complexité de ce site soit un critère intéressant pour évaluer si Azure Storage convient parfaitement. Peut-être que certaines exigences non fonctionnelles comme la charge attendue, la sécurité, etc. Le travail de Storage est seulement de servir les fichiers. Je voudrais aussi ajouter un CDN si c'est le cas. – itaysk

+0

Je veux dire, les vieux jours où nous avons des fichiers html statiques sur le serveur - passé. Nous avons besoin de temps d'exécution sur le serveur pour construire une page dynamique en fonction de la demande et des données. Par exemple C# + MVC + Razor. Ou un cadre pour node.js. Nous avons besoin de sessions, de cookies, etc. Comment cela fonctionnera-t-il avec Azure Blob Storage? – Vasiliy

0

Ceci est une question intéressante, et la réponse est que vous pouvez certainement créer un site Web en utilisant les fonctions Azure. Vous pouvez créer un déclencheur http qui renvoie un fichier HTML statique que vous incluez dans votre fonction. Si vous le souhaitez, vous pouvez ajouter une logique Javascript ou jQuery à ce fichier. Pour encore plus de fonctionnalités, vous pouvez créer plus de fonctions qui serviront d'API, que vous pouvez interroger à partir de votre fichier html. L'API pourrait, par exemple, utiliser le stockage Azure, où vous pouvez stocker des données à moindre coût dans des tableaux ou des blobs. En utilisant ce modèle, vous pourriez en théorie construire des applications Web complexes sur une architecture sans serveur. J'imagine, cependant, que vous seriez probablement un peu lourd à travailler, car l'outillage n'est pas vraiment génial pour le moment. D'un autre côté, vous n'auriez jamais besoin de penser à l'hébergement/mise à l'échelle, c'est donc un gros plus. Juste pour prouver ma théorie, j'ai implémenté une petite application de fonction avec deux fonctions de déclencheur C# http: une qui sert un fichier html, une autre pour l'API qui renvoie un nombre. Il est juste jeté ensemble rapidement pour prouver le point, donc je m'excuse si le code est en désordre.

HttpTriggerCSharp1:

using System.Net; 
using System.Net.Http.Headers; 
using System.Threading.Tasks; 
using System.IO; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
{ 
log.Info("C# HTTP trigger function processed a request."); 

var response = new HttpResponseMessage(HttpStatusCode.OK); 
var stream = new FileStream(@"d:\home\site\wwwroot\HttpTriggerCSharp1\index.html", FileMode.Open); 
response.Content = new StreamContent(stream); 
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); 
return response; 
} 

HttpTriggerCSharp2:

using System.Net; 

public static async Task<int> Run(HttpRequestMessage req, TraceWriter log) 
{ 
    return 42; 
} 
index

.html: (Notez que vous devrez ajouter le fichier index.html à vos fichiers de fonction collection)

<html> 
 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
</head> 
 
<body> 
 
<script type="text/javascript"> 
 
    $(document).ready(function() { 
 
     var original = $("#testDiv").text(); 
 
     $("#testDiv").text(original + " - jQuery added this!"); 
 
     $("#testButton").click(ButtonClick); 
 
    }); 
 

 
    var i = 0; 
 
    function ButtonClick() { 
 
     i++; 
 
     var result = i + i; 
 
     $.ajax("https://testfunctionwebsite.azurewebsites.net/api/HttpTriggerCSharp2").done(function(a,b) { 
 
      var queryResult = a; 
 
      $("#ajaxResult").text("Result from api:" + queryResult); 
 
     }); 
 
     $("#ajaxResult").text(result); 
 

 
    } 
 
</script> 
 
<div id="testDiv"> 
 
Hello functional world! 
 
</div> 
 

 
<div> 
 
<button id="testButton">Get some values</button><br> 
 
<div id="ajaxResult"></div> 
 
</div> 
 
</body> 
 
</html>

Vous pouvez l'essayer à: https://testfunctionwebsite.azurewebsites.net/api/HttpTriggerCSharp1