2020 年你应该使用的 6 个云平台
云平台通常是一个交钥匙解决方案,可以让您的生活更轻松,并减轻您的一些复杂性。
如果不使用至少一个云平台,您可能无法构建完整且可扩展的应用程序。
以下是列表:
1.亚马逊网络服务
即使您在当前工作中没有使用它,您至少也应该熟悉EC2和S3组件。
您无需报名参加昂贵的课程即可学习基本知识。
EC2 的基本流程:
S3 的基本流程:
虽然您可能希望使用 UI 来处理 EC2 中的非重复任务,但您很可能会使用AWS CLI来处理 S3 中的所有操作。
请记住,AWS 有很多组件,几乎包括您在云计算和 API 方面能想到的一切。
2. Twilio
Twilio 是一家云通信公司,它使用户能够使用标准 Web 语言通过 Web API 构建语音、VoIP 和 SMS 应用程序。
您并不想从头开始构建发送短信的功能。
以下是使用 Twilio 发送短信的 Python 示例:
from twilio.rest import Client
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
client = Client(account_sid, auth_token)
message = client.messages.create(
body='Hi there!',
from_='+15017122661',
to='+15558675310'
)
print(message.sid)
您可以在此处阅读简短的教程。
3.发送网格
SendGrid 是一个基于云的电子邮件传递平台,用于交易电子邮件和营销电子邮件。
当然,您无需 SendGrid 或任何其他外部提供商即可发送电子邮件,您所需要的只是一台服务器。
它非常简单:
<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";
mail($to,$subject,$txt,$headers);
?>
但是使用自己的电子邮件服务器而不是 SendGrid 不是一个好主意。
原因如下:
SendGrid 不仅适用于营销人员,它还提供了强大的 Web API。
以下是发送电子邮件的基本 Python 示例:
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
message = Mail(
from_email='from_email@example.com',
to_emails='to@example.com',
subject='Sending with SendGrid is Fun',
html_content='<strong>and easy to do anywhere, even with Python</strong>')
try:
sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
print(response.status_code)
print(response.body)
print(response.headers)
except Exception as e:
print(e.message)
如您所见,我们还检查了前面示例中的状态代码。
4.最终测试
Endtest 是一个云平台,您可以在其中为您的 Web 应用程序和移动应用程序创建和执行自动化测试
为用户提供完美的体验至关重要。
实现这一目标的一个好方法是依靠自动化测试,并成为第一个发现某些东西何时停止工作的人。
单元测试和 API 请求不足以验证您的产品是否按用户预期运行。
Endtest 提供了一种简单的方法来创建功能自动化测试并在跨浏览器云和移动设备实验室上执行它们。
而且您无需编写任何代码即可做到这一点。
有一个用于 Web 测试的记录器和一个用于移动测试的记录器,它们都依赖于元素识别,而不是图像识别或 OCR。
它还提供API并与 Jenkins、Jira、Slack 等解决方案集成。
为什么要使用这个云平台?
这是一个很好的答案。
5.振幅分析
这不是您通常的分析解决方案,您在页面中导入一些 JavaScript 并开始跟踪访问者。
Amplitude 可以帮助您跟踪用户事件并生成非常有用的信息。
例如,您可以查看 6 周前注册的用户中有多少仍在使用您的产品,这个指标称为保留率。
关键在于使用事件跟踪功能并将其集成到您的代码中。
对于用户执行的每个操作,您可以向Amplitude API发送请求,以存储用户的标识符、事件类型以及您需要的任何其他内容。
以下是如何从 Python 代码向 Amplitude 发送事件:
import amplitude
# initialize amplitude logger
amplitude_logger = amplitude.AmplitudeLogger(api_key = "SOME_API_KEY_STRING")
# example event
event_args = {"device_id":"somedeviceid", "event_type":"justtesting",
"event_properties":{"property1":"somevalue", "propertyN":"anothervalue"}
event = amplitude_logger.create_event(**event_args)
# send event to amplitude
amplitude_logger.log_event(event)
这使您可以为所有用户和细分生成事件时间线。
6.条纹
Stripe 是一套支付 API,为各种规模的在线企业提供商务支持。
处理付款是另一件您不想从头开始的事情。
Stripe 以对开发人员友好而闻名,并为其 API提供了详细的文档。
处理付款不仅仅是处理信用卡付款,Stripe 还涵盖其他重要方面,例如欺诈和合规性。
以下是使用 JavaScript 的示例:
var stripe = Stripe('_____YOUR_STRIPE_PUBLISHABLE_KEY___');
var elements = stripe.elements();
// Create an instance of the card Element
var card = elements.create('card', {style: style});
// Add an instance of the card Element into the `card-element` <div>
card.mount('#card-element');
// Handle real-time validation errors from the card Element.
card.addEventListener('change', function(event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
// Handle form submission
var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
event.preventDefault();
stripe.createToken(card).then(function(result) {
if (result.error) {
// Inform the user if there was an error
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
} else {
stripeTokenHandler(result.token);
}
});
});
// Send Stripe Token to Server
function stripeTokenHandler(token) {
// Insert the token ID into the form so it gets submitted to the server
var form = document.getElementById('payment-form');
// Add Stripe Token to hidden input
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
// Submit form
form.submit();
}