680 Final Study Guide

Pataasin ang iyong marka sa homework at exams ngayon gamit ang Quizwiz!

How would you integrate Salesforce plugin with a custom app?

(Marketing Service app from the Salesforce app store) Integration would occur by using one of the Salesforce api's. Basically there are two different paradigms, if you are developing managed packages then you'll be using dev orgs, if you are developing an application for one specific customer, than you'll be using sandboxes (in one of the many flavors that they are offered in). And I do think most orgs will have multiple sandboxes if they are trying to keep developers from stepping on each other's toes. Here is a pretty good/short overview: http://www.soliantconsulting.com/blog/2013/03/salesforcecomforcecom-team-development Also, if you aren't a partner, it is easy to sign up (not so easy to get a formal agreement, but that comes later) and then you'll be able to create as many dev orgs as you need.

Chaos Engineering

+1 Tweet Share Share Netflix isn't just the home of bingeable TV shows streamed over Internet. It also gave birth—out of necessity—to the discipline of chaos engineering. While the term may sound like an oxymoron or the title of a bad science-fiction movie, it's actually an increasingly popular approach to improving the resiliency of complex, modern technology architectures. This post is intended to help explain exactly what chaos engineering is and how it's used. But first, a quick history lesson can help put chaos engineering into perspective. Embracing "chaos" Over the years, Netflix evolved its infrastructure to support increasingly complex and resource-hungry activities, especially as its customer base grew to 100 million users in more than 190 countries. The company's original rental and streaming services ran in on-premise racked servers, but this created a single point of failure and other issues. Famously, in August 2008, corruption in a major database caused a three-day outage during which Netflix could not ship any DVDs. In response, Netflix engineers set out to find an alternative architecture, and in 2011, they migrated the company's monolithic on-premise stack to a distributed cloud-based architecture running on Amazon Web Services. This new, distributed architecture, comprised of hundreds of microservices, removed that single point of failure. But it also introduced new types of complexity that required significantly more reliable and fault-tolerant systems. It was at this point that Netflix's engineering teams learned a critical lesson: Avoid failure by failing constantly. A new use for chaos To do this, Netflix engineers created Chaos Monkey, a tool they could use to proactively cause failures in random places at random intervals throughout their systems. More specifically, as stated by the tool's maintainers on GitHub, "Chaos Monkey randomly terminates virtual machine instances and containers that run inside of your production environment." With Chaos Monkey, engineers quickly come to learn if the services they're building are robust and resilient enough to tolerate unplanned failures. And with the advent of Chaos Monkey, a new discipline was born: chaos engineering, described as "the discipline of experimenting on a distributed system in order to build confidence in the system's capability to withstand turbulent conditions in production." In 2012, Netflix released Chaos Monkey under an open source license. Today, numerous companies, from Google to Amazon to IBM to Nike, all practice some form of chaos engineering to improve the reliability of their modern architectures. Netflix has even extended its chaos-engineering toolset to include a entire "Simian Army," with which it attacks its own systems. Chaos engineering: not really all that chaotic Kolton Andrus, CEO of chaos engineering startup Gremlin, who worked at both Google and Netflix, suggests thinking of chaos engineering as a flu shot. It may seem crazy to deliberately infuse something harmful into your body in hopes of preventing a future illness, but this approach also works with distributed cloud-based systems, Andrus said. Chaos engineering involves carefully injecting harm into systems to test the systems' response to it. This allows companies to prepare and practice for outages, and to minimize the effects of downtime before it occurs. The operative word here is carefully. It's a misnomer to think of chaos engineering as actually chaotic. In fact, very few such tests are random. Instead, chaos engineering involves thoughtful, planned, and controlled experiments designed to demonstrate how your systems behave in the face of failure. "Of all the chaos engineering experiments that I have conducted with customers over the last year, I can probably count just one or two that have had a random quota to them," Russ Miles, founder and CEO of ChaosIQ.io, a European chaos engineering platform, said in an interview. "Most of them are very careful, very controlled, proper experiments. It really has nothing to do with randomness, unless randomness is the thing you're trying to test for." Minimizing the blast area Tom Petrocelli, a research fellow at Amalgam Insights, said in an interview that one key chaos engineering best practice is to "minimize the blast area. That means minimizing the effects on the business—not necessarily on the technology." "Yes, you want to discover the holes in your technology's resilience," Petrocelli stated, "but you want to do so in a way that doesn't damage business operations." To make sure they don't muck up the business, Petrocelli advised engineering teams to "plan meticulously" for chaos engineering work. If you're lucky, he said, something will go wrong that you didn't expect to go wrong, which is actually considered a success in the world of chaos engineering. With that in mind, Petrocelli said, it's critical to make sure that you have the right team in place to fix anything that might break. "Don't mess with Kubernetes containers if all your Kubernetes engineers are at an offsite meeting," he warned. Not just testing: experiments to generate knowledge Casey Rosenthal, a former engineering manager on Netflix's Chaos Team, made it clear in a DZone Q&A that chaos engineering is not just a case of testing systems. Testing looks for a binary output. Did something pass a specific challenge? Yes or no? Chaos engineering, on the other hand, is a formal method to generate new knowledge. Precisely because modern software systems are often too complex for anyone to fully understand them, engineers perform experiments to reveal more about the systems. Testing is still critical, said Rosenthal in the Q&A, but chaos engineering should complement traditional testing. Chaos engineering can be thought of as the facilitation of experiments to uncover systemic weaknesses. These experiments often follow four steps: 1. Define and measure your system's "steady state." Start by pinpointing metrics that indicate, in real time, that your systems is working the way it should. Netflix uses the rate at which customers press the play button on a video streaming device as steady state, calling this "streams per second." Note that this is more a business metric than a technical one; in fact, in chaos engineering, business metrics are often more useful than technical metrics, as they're more suited for measuring customer experience or operations. 2. Create a hypothesis. As with any experiment, you need a hypothesis to test. Because you're trying to disrupt the usual running of your system—the steady state—your hypothesis will be something like, "When we do X, there should be no change in the steady state of this system." Why phrase things that way? Because if you have a reasonable expectation that a particular action on your part will change the steady state of a system, then the first thing you should do is fix the system so the action will not have that effect. Your chaos engineering activities should involve real experiments, involving real unknowns. "Chaos engineering is not for the type of incident that is fairly predictable, covered by runbooks, that you know you have to automate but just haven't gotten around to it yet," said Beth Long, DevOps solutions strategist—and former site reliability engineer—at New Relic. "You need it for the kinds of things that arise from the nature of complexity itself. Where everyone piles into Slack and scratches their heads because they don't know what to think." 3. Simulate what could happen in the real world. In the O'Reilly book, Chaos Engineering: Building Confidence in System Behavior through Experiments, the Netflix architects of chaos engineering, Casey Rosenthal, Lorin Hochstein, Aaron Blohowiak, Nora Jones, and Ali Basiri, suggest a number of chaos engineering experiments: Simulate the failure of a datacenter Force system clocks to become out of sync Execute a routine in driver code that emulates I/O errors Induce latency between services Randomly cause functions to throw exceptions. In general, you want to simulate scenarios that have the potential to make your systems become unavailable or cause their performance to degrade. Ask yourself, "What could go wrong?" and then simulate that. Be sure to prioritize potential errors, too. "When you have really complex systems, it's very easy to get downstream effects that you didn't anticipate, which is one of the things that chaos engineering is looking to find," said Petrocelli. "So the more complex the system is and the more vital it is, the more likely a candidate it is for chaos engineering." 4. Prove or disprove your hypothesis. Compare your steady-state metrics to those you gather after injecting the disturbance into your system. If you find differences in the measurements, your chaos engineering experiment has succeeded—you can now go on to strengthen and prepare your system so a similar incident in the real world doesn't cause problems. Alternatively, if you find that your steady state remains steady, you may walk away with a higher degree of trust in that part of your system. Don't break your system—learn about it and improve it "Chaos engineering is not about breaking things per se—it's never been about breaking things—but about learning," said Miles. "You're trying to introduce a learning loop for the team, and the way that humans in groups absorb information best is through experience." Of course you can—and do—learn from actual outages, but that's very painful, noted Russ. "Chaos engineering gives you the chance to do these 'pre-mortems' that are within your control." Chaos engineering also taps the brains of the people who know a complex system best. According to Long, "the more interesting chaos engineering experiments are based not on important-but-obvious hypotheses like, 'If this rack fails, that service should increase latency but remain available,' but on hypotheses that you're unlikely to think up without a strong intuitive understanding of the system and any recent incidents. The chaos engineering process helps convert that expert intuition into explicit, testable hypotheses, exposing valuable information not easily derived just from looking, as an outsider, at the system itself." There are many toolkits available, said Matthew Fellows, principal consultant at DIUS, a consulting firm based in Melbourne, Australia, which has run chaos engineering projects for clients. (Check out this curated list of chaos engineering resources on GitHub: https://github.com/dastergon/awesome-chaos-engineering.) "Go ahead, get Chaos Monkey, and use it to blow up one of your instances," Fellows suggested. "It's pretty scary if you've never done it before, but definitely worth it."

When should we not use sales force

1. NO Executive Sponsorship Support from the highest levels of leadership is essential for a successful Salesforce implementation. Executive buy-in ensures adequate designation of resources and promotes user adoption. Without it, you may have difficulty securing the financial and staff resources to complete a successful implementation, and may have an uphill battle in getting departments to fully adopt a new system. If you have an executive who still needs convincing, help them understand the restrictions on growth caused by your current system and the growth possibilities with Salesforce. Let them know the Total Cost of Ownership, potential pitfalls, and missed opportunities your current system forces on you, and how Salesforce can address each of those issues. 2. Organizational Transition 3. I Like Shiny Things Does your existing CRM work just fine for your organization? Don't implement Salesforce simply because it's new and shiny. The hundreds of other CRM systems out there were designed for a purpose, and if that purpose still meets the operational needs and growth trajectory of your organization, why go through the pain of a migration? No doubt almost every nonprofit organization could receive some benefit from Salesforce, but an implementation is a major endeavor that will take a significant amount of time and resources to be successful. Consider the costs in comparison to the potential benefits before taking the plunge. 4. Bad Timing For many organizations the calendar year end is a critical time to meet fundraising goals. If you are one of those organizations, December is not the time to begin, or end, a fresh Salesforce implementation. Time your project so you will have at least 3 months for your staff to familiarize themselves with Salesforce before your busiest season begins. 5. Salesforce Ignorance One of the most common regrets at the end of a Salesforce implementation is "I wish I had known _____ about Salesforce before we began our implementation!" Even the best implementation partner in the world can't read your mind - learn about Salesforce and research the AppExchange directory of products yourself before you begin an implementation. Educating yourself about Salesforce before you begin will allow you to take full advantage of the CRM's capabilities as you design a solution. You have multiple nonprofit package options to choose from when implementing Salesforce for your organization. The Salesforce Foundation offers both the free Nonprofit Starter Pack and the paid NGO Connect product. Third party companies also offer paid packages such as Cloud for Good's Congregation Connect and Causeview's nonprofit package. 6. Dirty Data Does your organization use database fields in inconsistent ways? Do you have outdated or incorrect information interspersed with correct data? Unclean data can overwhelm even the most carefully planned implementations and can quickly erode user confidence and adoption. If you know you have dirty data, clean it up before you begin an implementation. If you don't have the staff resources to clean up your data, that may be a sign your organization does not currently have the bandwidth to successfully take on a CRM migration either! If I still haven't talked you out of a Salesforce implementation, you may be in the perfect position to begin! In the end, only you can decide when it is the right time for a Salesforce implementation. You may never get all the stars to align, but hopefully after reading this post you will at least be educated about the risks and be prepared for the challenges before they have a chance to derail your implementation.

Why do we do Chaos Engineering?

Chaos Engineering is an approach for learning about how your system behaves by applying a discipline of empirical exploration. Just as scientists conduct experiments to study physical and social phenomena, Chaos Engineering uses experiments to learn about a particular system. Applying Chaos Engineering improves the resilience of a system. By designing and executing Chaos Engineering experiments, you will learn about weaknesses in your system that could potentially lead to outages that cause customer harm. You can then address those weaknesses proactively, going beyond the reactive processes that currently dominate most incident response models.

Here are some of the top reasons for deploying failure-as-a-Service

Chaos Engineering is billed as a disciplined approach to investigate failures before they become outages. By proactively testing how a system responds under stress, you can identify and fix failures before they end up in the news. This novel principle also allows engineers to compare and simulate what they think will happen happens in the systems. You literally "break things on purpose" to learn how to build more resilient systems. Interestingly, many big tech firms which boast of distributed systems and microservices architecture rely on Chaos Engineering. Some of the large tech companies are LinkedIn, Netflix, Facebook, Amazon, Google and Microsoft among others. Chaos Engineering is about running a series of planned experiments which enable engineers to learn how the systems behave in the face of downtime and outages The main technical reason for deploying Chaos Engineering is that insight from these simulated experiments can lead to better understanding of underlying architecture. It will also greatly reduce on-call burden, improve understanding of system failure mode and reduce maintenance costs. One of the most popular experiments Gremlin provides is dubbed — Unknown-Unknowns wherein one shuts down an entire cluster in the main region. The teams will shut down two replicas of the cluster at the same time, and after gathering the meantime over a couple of months, it will determine how to build clone two new replicas off the primary cluster.

Chaos Engineering

Chaos Engineering was popularised by engineers at Netflix whose primary goal was to build stable, secure and bug-free software. To achieve this, Netflix engineers introduced a tool called Chaos Monkey built on the principles of a model that can be applied across different projects and different departments to make IT services more resilient. The Netflix infrastructure is built on this methodology which allows engineers to significantly improve their systems without comprising the complexity of the system. Chaos Engineering also accelerates flexibility and rapid development.

How Does Chaos Engineering Differ from Testing?

Chaos Engineering, fault injection, and failure testing have a large overlap in concerns and often in tooling as well; for example, many Chaos Engineering experiments at Netflix rely on fault injection to introduce the effect being studied. The primary difference between Chaos Engineering and these other approaches is that Chaos Engineering is a practice for generating new information, while fault injection is a specific approach to testing one condition. When you want to explore the many ways a complex system can misbehave, injecting communication failures like latency and errors is one good approach. But we also want to explore things like a large increase in traffic, race conditions, byzantine failures (poorly behaved nodes generating faulty responses, misrepresenting behavior, producing different data to different observers, etc.), and unplanned or uncommon combinations of messages. If a consumer-facing website suddenly gets a surge in traffic that leads to more revenue, we would be hard pressed to call that a fault or failure—but we are still very interested in exploring the effect that has on the system. Similarly, failure testing breaks a system in some preconceived way, but doesn't explore the wide open field of weird, unpredictable things that could happen. An important distinction can be drawn between testing and experimentation. In testing, an assertion is made: given specific conditions, a system will emit a specific output. Tests are typically binary, and determine whether a property is true or false. Strictly speaking, this does not generate new knowledge about the system, it just assigns valence to a known property of it. Experimentation generates new knowledge, and often suggests new avenues of exploration. Throughout this book, we argue that Chaos Engineering is a form of experimentation that generates new knowledge about the system. It is not simply a means of testing known properties, which could more easily be verified with integration tests. Examples of inputs for chaos experiments: Simulating the failure of an entire region or datacenter. Partially deleting Kafka topics over a variety of instances to recreate an issue that occurred in production. Injecting latency between services for a select percentage of traffic over a predetermined period of time. Function-based chaos (runtime injection): randomly causing functions to throw exceptions. Code insertion: Adding instructions to the target program and allowing fault injection to occur prior to certain instructions. Time travel: forcing system clocks out of sync with each other. Executing a routine in driver code emulating I/O errors. Maxing out CPU cores on an Elasticsearch cluster. The opportunities for chaos experiments are boundless and may vary based on the architecture of your distributed system and your organization's core business value.

Chaos Monkey

Chaos Monkey Chaos Monkey is a tool invented in 2011 by Netflix to test the resilience of its IT infrastructure.[2] It works by intentionally disabling computers in Netflix's production network to test how remaining systems respond to the outage. Chaos Monkey is now part of a larger suite of tools called the Simian Army designed to simulate and test responses to various system failures and edge cases. The code behind Chaos Monkey was released by Netflix in 2012 under an Apache 2.0 license.[8][5] The name "Chaos Monkey" is explained in the book Chaos Monkeys by Antonio Garcia Martinez:[9] "Imagine a monkey entering a "data center", these "farms" of servers that host all the critical functions of our online activities. The monkey randomly rips cables, destroys devices and returns everything that passes by the hand [i.e. flings excrement]. The challenge for IT managers is to design the information system they are responsible for so that it can work despite these monkeys, which no one ever knows when they arrive and what they will destroy."

chaos engineering

Chaos engineering is the process of testing a distributed computing system to ensure that the system can withstand unexpected disruptions in function. It is so named because it relies on concepts from chaos theory, which focuses on random and unpredictable behavior. The goal of chaos engineering is to continuously conduct controlled experiments that introduce random and unpredictable behavior in order to discover weaknesses in a system. In computing, a distributed system is any grouping of computers that are linked over a network and share resources. Distributed systems can break when unexpected conditions or situations (such as an unintentional change from an intentional update) occur. Large distributed systems have complex and unpredictable dependencies between components, which can it difficult to troubleshoot an error. This is where chaos engineering comes into play. Chaos engineering identifies "what if" scenarios that aim to trigger failures, so that the system owners can evaluate the performance and integrity of the software. For example, image a distributed software system that is designed to handle a certain number of transactions per second. Chaos engineering would seek to discover how the software responds when that limit is approached, reached or exceeded and performance suffers or the system crashes. The scenario can be simulated in a chaos engineering setup to see how the system behaves when it experiences a lack of resources or point of failure. If the system fails under testing, developers can address design changes that adequately accommodate the scenario, or add ways to avoid it entirely. Once design changes are made, the same test is repeated to verify the desired results. How chaos engineering works Like stress testing, chaos engineering aims to improve a system's or network's design by discovering and correcting its weaknesses. The process is typically divided into several steps and starts with the establishment of a baseline. The testers must first identify how the system should operate under optimal conditions and specify what constitutes a normal working state. Next, they must consider one or more potential weaknesses and formulate a hypothesis about the effects of those weaknesses. For example, software testers might want to know what will happen if a large traffic spike occurs. They then would conduct experiments to gauge the consequences of a large spike. The experiments might reveal an error in a critical processes or an unexpected cause-and-effect relationship. For example, the traffic spike simulation might show an unexpected performance degradation in storage. Chaos engineering can be performed for a program not yet launched, and much can still be learned; however, testing on real-world conditions yields the most accurate results. For this reason, chaos engineering is often performed on production systems, especially when it is too cumbersome or expensive to duplicate a large, distributed system environment just for testing purposes. Naturally, this also means that chaos engineering can be highly disruptive. Success with the chaos engineering paradigm demands close communication and coordination between IT staff and developers and across business units. Experiments are rarely run during peak time to avoid giving customers a negative experience. Chaos Monkey terminates service instancesNETFLIX Chaos Monkey is a tool that enables chaos engineering by creating problems on systems. Here, it is shown terminating instances of a service. Chaos engineering tools Chaos engineering is a relatively new approach to software testing and software quality assurance (QA). Netflix was a notable pioneer of chaos engineering, among the first to formalize how to use it in production systems. Netflix designed and open sourced automation platforms for chaos tests, including Chaos Monkey, Chaos Gorilla and similarly named tools, collectively dubbed the Simian Army. For example, Chaos Monkey randomly disables production instances to ensure a system failure, but designed not to have any customer effects. Chaos Gorilla does the same job on a larger geographical scale. The Netflix Simian Army continues to grow with more chaos-inducing programs made to test their services.

Which API do I use?

Choosing the right API for your integration needs is an important decision. Here's some information on our most commonly used APIs, including supported protocols, data formats, communication paradigms, and use cases. Treat this section as a reference you can return to when you're considering which API to use. Note the four data APIs that we talked about already. We'll be diving into each of them next. API Name Protocol Data Format Communication REST API REST JSON, XML Synchronous SOAP API SOAP (WSDL) XML Synchronous Chatter REST API REST JSON, XML Synchronous (photos are processed asynchronously) User Interface API REST JSON Synchronous Analytics REST API REST JSON, XML Synchronous Bulk API REST CSV, JSON, XML Asynchronous Metadata API SOAP (WSDL) XML Asynchronous Streaming API Bayeux JSON Asynchronous (stream of data) Apex REST API REST JSON, XML, Custom Synchronous Apex SOAP API SOAP (WSDL) XML Synchronous Tooling API REST or SOAP (WSDL) JSON, XML, Custom Synchronous When to Use REST API REST API provides a powerful, convenient, and simple REST-based web services interface for interacting with Salesforce. Its advantages include ease of integration and development, and it's an excellent choice of technology for use with mobile applications and web projects. For certain projects, you may want to use REST API with other Salesforce REST APIs. To build UI for creating, reading, updating, and deleting records, including building UI for list views, actions, and dependent picklists, use User Interface API. To build UI for Chatter, communities, or recommendations, use Chatter REST API. If you have many records to process, consider using Bulk API, which is based on REST principles and optimized for large sets of data. When to Use SOAP API SOAP API provides a powerful, convenient, and simple SOAP-based web services interface for interacting with Salesforce. You can use SOAP API to create, retrieve, update, or delete records. You can also use SOAP API to perform searches and much more. Use SOAP API in any language that supports web services. For example, you can use SOAP API to integrate Salesforce with your org's ERP and finance systems. You can also deliver real-time sales and support information to company portals and populate critical business systems with customer information. When to Use Chatter REST API Use Chatter REST API to display Chatter feeds, users, groups, and followers, especially in mobile applications. Chatter REST API also provides programmatic access to files, recommendations, topics, notifications, Data.com purchasing, and more. Chatter REST API is similar to APIs offered by other companies with feeds, such as Facebook and Twitter, but it also exposes Salesforce features beyond Chatter. When to Use User Interface API Build Salesforce UI for native mobile apps and custom web apps using the same API that Salesforce uses to build Lightning Experience and Salesforce for Android, iOS, and mobile web. Build user interfaces that let users work with records, list views, actions, favorites, and more. Not only do you get data and metadata in a single response, but the response matches metadata changes made to the org by Salesforce admins. You don't have to worry about layouts, picklists, field-level security, or sharing—all you have to do is build an app that users love. When to Use the Analytics REST API You can access Analytics assets—such as datasets, lenses, and dashboards—programmatically using the Analytics REST API. Send queries directly to the Analytics Platform. Access datasets that have been imported into the Analytics Platform. Create and retrieve lenses. Access XMD information. Retrieve a list of dataset versions. Create and retrieve Analytics applications. Create, update, and retrieve Analytics dashboards. Retrieve a list of dependencies for an application. Determine what features are available to the user. Work with snapshots. Manipulate replicated datasets. When to Use Bulk API Bulk API is based on REST principles and is optimized for loading or deleting large sets of data. You can use it to query, queryAll, insert, update, upsert, or delete many records asynchronously by submitting batches. Salesforce processes batches in the background. SOAP API, in contrast, is optimized for real-time client applications that update a few records at a time. You can use SOAP API for processing many records, but when the data sets contain hundreds of thousands of records, SOAP API is less practical. Bulk API is designed to make it simple to process data from a few thousand to millions of records. The easiest way to use Bulk API is to enable it for processing records in Data Loader using CSV files. Using Data Loader avoids the need to write your own client application. When to Use Metadata API Use Metadata API to retrieve, deploy, create, update, or delete customizations for your org. The most common use is to migrate changes from a sandbox or testing org to your production environment. Metadata API is intended for managing customizations and for building tools that can manage the metadata model, not the data itself. The easiest way to access the functionality in Metadata API is to use the Force.com IDE or Ant Migration Tool. Both tools are built on top of Metadata API and use the standard Eclipse and Ant tools, respectively, to simplify working with Metadata API. Force.com IDE is built on the Eclipse platform, for programmers familiar with integrated development environments. Code, compile, test, and deploy from within the IDE. The Ant Migration Tool is ideal if you use a script or the command line for moving metadata between a local directory and a Salesforce org. When to Use Streaming API Use Streaming API to receive near-real-time streams of data that are based on changes in Salesforce records or custom payloads. For Salesforce record changes, Salesforce publishes notifications when the changes occur. For custom notifications, you can publish event messages. Subscribers can receive notifications using CometD—an implementation of the Bayeux protocol that simulates push technology. Clients can also subscribe to some types of events with Apex triggers or declaratively with Process Builder and Flow Builder. Use the type of streaming event that suits your needs. PushTopic Event Receive changes to Salesforce records based on a SOQL query that you define. The notifications include only the fields that you specify in the SOQL query. Change Data Capture Event Receive changes to Salesforce records with all changed fields. Change Data Capture supports more standard objects than PushTopic events and provides more features, such as header fields that contain information about the change. Platform Event Publish and receive custom payloads with a predefined schema. The data can be anything you define, including business data, such as order information. Specify the data to send by defining a platform event. Subscribe to a platform event channel to receive notifications. Generic Event Publish and receive arbitrary payloads without a defined schema. When to Use Apex REST API Use Apex REST API when you want to expose your Apex classes and methods so that external applications can access your code through REST architecture. Apex REST API supports both OAuth 2.0 and Session ID for authorization. When to Use Apex SOAP API Use Apex SOAP API when you want to expose Apex methods as SOAP web service APIs so that external applications can access your code through SOAP. Apex SOAP API supports both OAuth 2.0 and Session ID for authorization. When to Use Tooling API Use Tooling API to integrate Salesforce metadata with other systems. Metadata types are exposed as sObjects, so you can access one component of a complex type. This field-level access speeds up operations on complex metadata types. You can also build custom development tools for Force.com applications. For example, use Tooling API to manage and deploy working copies of Apex classes and triggers and Visualforce pages and components. You can also set checkpoints or heap dump markers, execute anonymous Apex, and access logging and code coverage information. REST and SOAP are both supported.

What types of companies shouldn't use Salesforce?

Company's which are looking for an out-of-the box solution might be better off with a different tool. Salesforce scales well. However, some company prefer a solution one can turn on an done. One can do this with Salesforce as well, but for that kind of requirements there are cheaper solutions on the market which are easier to use.

Salesforce

Does not have affordable storage and computer power as in VMS ( and GCP and AWS services)

markov decision process

First need to know markov property ! ○ "The future is independent of the past given the present." ● A Markov process is a memoryless random process, i.e. a sequence of random states S1, S2, ...

Open AI Gym

Gym is a toolkit for developing and comparing reinforcement learning algorithms. It supports teaching agents everything from walking to playing games like Pong or Pinball

A.I

Intelligent machines that think and act like human beings

Why is Salesforce used?

It helps automate business processes and extend powerful APIs for added security. Tools in the App Cloud include: Force.com, a platform as a service (PaaS), allows admins and developers to create websites and applications with Apex that integrate into the main Salesforce.com application.

Building Resilient Systems

Netflix engineers published a document — Principles of Chaos Engineering which detailed how the empirical system based approach helped systems withstand outages. It also helped engineers understand the complex behaviour of distributed systems and helped them observe the systems in a controlled environment. Over a period of time, the team used these learnings to strengthen the microservices infrastructure and developed the concept of Chaos Engineering. Citing an example, the team revealed how Chaos Engineering was put into effect for one of their services — subscriber, which is used to handle user management activities and authentication. Due to unforeseen situations such as downstreaming services, subscriber service may go out of control. To minimise the fallback, the team devised a strategy to improve resiliency around the product so that customers can rely on it even during downtime. To reduce latency from traffic, the team observed deviations in two groups: Control group Variable group

Salesforce API

REST API REST API is a simple and powerful web service based on RESTful principles. It exposes all sorts of Salesforce functionality via REST resources and HTTP methods. For example, you can create, read, update, and delete (CRUD) records, search or query your data, retrieve object metadata, and access information about limits in your org. REST API supports both XML and JSON. Because REST API has a lightweight request and response framework and is easy to use, it's great for writing mobile and web apps. SOAP API SOAP API is a robust and powerful web service based on the industry-standard protocol of the same name. It uses a Web Services Description Language (WSDL) file to rigorously define the parameters for accessing data through the API. SOAP API supports XML only. Most of the SOAP API functionality is also available through REST API. It just depends on which standard better meets your needs. Because SOAP API uses the WSDL file as a formal contract between the API and consumer, it's great for writing server-to-server integrations. Bulk API Bulk API is a specialized RESTful API for loading and querying lots of data at once. By lots, we mean 50,000 records or more. Bulk API is asynchronous, meaning that you can submit a request and come back later for the results. This approach is the preferred one when dealing with large amounts of data. There are two versions of Bulk API (1.0 and 2.0). Both versions handle large amounts of data, but we use Bulk API 2.0 in this module because it's a bit easier to use. Bulk API is great for performing tasks that involve lots of records, such as loading data into your org for the first time. Streaming API Streaming API is a specialized API for setting up notifications that trigger when changes are made to your data. It uses a publish-subscribe, or pub/sub, model in which users can subscribe to channels that broadcast certain types of data changes. The pub/sub model reduces the number of API requests by eliminating the need for polling. Streaming API is great for writing apps that would otherwise need to frequently poll for changes. API Access and Authentication You don't need a treasure map to access Salesforce APIs. All you need is a Trailhead Playground or an org on one of the following editions: Enterprise Edition, Unlimited Edition, Developer Edition, Performance Edition, or Professional Edition (with an add-on). Make sure that you have the "API Enabled" permission, and you're ready to start integrating. All API calls, except for the SOAP API login() call, require authentication. You can either use one of the supported OAuth flows or authenticate with a session ID retrieved from the SOAP API login() call. Check the developer guide for your API of choice to get started. API Limits Any captain worth his or her salt knows when to put limits on the crew for the good of the ship. If the captain lets the sailors drink grog all day long, nothing gets done. Similarly, Salesforce limits the number of API calls per org to ensure the health of the instance. These limits exist to prevent rogue scripts from smashing our servers into driftwood. They don't get in the way of your everyday work. Nonetheless, it's a good idea to get familiar with them. There are two types of API limits. Concurrent limits cap the number of long-running calls (20 seconds or longer) that are running at one time. Total limits cap the number of calls made within a rolling 24-hour period. Concurrent limits vary by org type. For a Trailhead Playground, the limit is five long-running calls at once. For a sandbox org, it's 25 long-running calls. Total limits vary by org edition, license type, and expansion packs that you purchase. For example, an Enterprise Edition org gets 1,000 calls per Salesforce license and 200 calls per Salesforce Light App license. With the Unlimited Apps Pack, that same Enterprise Edition org gets an extra 4,000 calls. Total limits are also subject to minimums and maximums based on the org edition, but we won't get into that here. If you want to know more, check out the API Request Limits link in the Resources section. You have several ways to check your remaining API calls. You can view them in the API Usage box on the System Overview page. From Setup, enter System Overview in the Quick Find box, then select System Overview. You can also set up notifications for when your org exceeds a number of API calls that you designate. To do so, from Setup, enter API Usage Notifications in the Quick Find box, then select API Usage Notifications. When using REST or SOAP API, the LimitInfoHeader response header gives you information on your remaining calls. You can also access the REST API Limits resource for information about all sorts of limits in your org.

What is Reinforcement Learning?

Reinforcement Learning is a technology that develop from some subjects such as statistics , control theory and psychology. This technology obtained in many research and applications such as artificial intelligence (AI) , machine learning (ML) , which address the problem of automatic learning of optimal decisions over time.

Reinforcement Learning Process

Reinforcement learning is like trial-and-error learning . It is based on the maximum reward that agent( Robot) earns from each round we run the algorithm. ● In RL each time the agent try to achieve a better result and the continuous of this action helps to master an specific action. Basic RL model consist of ● Agent ● Environment ● Action ● Reward The world that agent moves . ○ Note " the environment take the agent's current state and action as input and return as output the agent's reward and the next state. " Open AI Gym Open AI GYM is a toolkit for developing and comparing reinforcement learning algorithm. ● It's open source library. ● Gym make no assumption about the structure of agent whatsoever. ● It's compatible with any numerical computation library such as ○ Tensorflow , Theano Agent ● Agent : Does action in environment. ○ Basically the algorithm we use in RL is the agent. ■ Ex : A drone making a delivery , ■ Ex : Super mario navigating in a video game . Action ● Action : is the set of all possible move the agent can make. ○ EX: in video game the list of possibilities can be running jumping moving to the left or right. Reward ● Rewards : a reward is the feedback by which measure the success or failure of an agent's actions. ○ Ex, The total coins that mario collects in the game. ● The goal is to maximize the reward. State ● A state is a set of tokens that represent every state that the agent can be in. ○ Ex, a specific place and moment

What is Salesforce used for?

Salesforce's services allow businesses to use cloud technology to better connect with customers, partners and potential customers. The software has become the number one for customer success and helps businesses track customer activity, market to customers and many more services.

What is selenium?

Selenium is an open source tool which is used for automating the tests carried out on web browsers (Web applications are tested using any web browser). Wait, before you get carried away, let me re-iterate that, only testing of web applications is possible with Selenium. We can neither test any desktop (software) application nor test any mobile application using Selenium. It' a bummer right? I can feel your pain. But don't worry, there are many tools for testing software and mobile applications like: IBM's RFT, HP's QPT, Appium and many more. But, the focus of this blog is, testing dynamic web applications and why Selenium is the best for that purpose. Since Selenium is open-source, there is no licensing cost involved, which is a major advantage over other testing tools. Other reasons behind Selenium's ever growing popularity are: selenium features - what is selenium Test scripts can be written in any of these programming languages: Java, Python, C#, PHP, Ruby, Perl & .Net Tests can be carried out in any of these OS: Windows, Mac or Linux Tests can be carried out using any browser: Mozilla Firefox, Internet Explorer, Google Chrome, Safari or Opera It can be integrated with tools such as TestNG & JUnit for managing test cases and generating reports It can be integrated with Maven, Jenkins & Docker to achieve Continuous Testing But there surely has to be shortcomings right? We can use Selenium only to test web applications. We cannot test desktop applications or any other software There is no guaranteed support available for Selenium. We need to leverage on the available customer communities It is not possible to perform testing on images. We need to integrate Selenium with Sikuli for image based testing There is no native reporting facility. But we can overcome that issue by integrating it with frameworks like TestNG or JUnit

Need For Software Testing

Software testing is where it all boils down to. Today's world of technology is completely dominated by machines, and their behavior is controlled by the software powering it. Will the machines behave exactly as we want them to? Everytime? Everywhere? The answer to these questions lie in software testing. At the end of the day, it is the software application's success rate which is going to control your business growth. The same thing can be said even for web applications because most businesses today are completely reliant on the internet. Take for example, any e-commerce company. Be it Amazon or E-Bay or Flipkart, they rely on the customer traffic on their web sites and traffic on their web based mobile applications for business. Imagine, if something catastrophic happens like the prices of a number of products being capped off at 10$, all because of a small bug in a "not so easily readable" part of the code. Then what can be done, and how can we prevent it the next time? By testing the code before deployment right? So, that is the need for software testing. But, what is Selenium? Is it a software testing tool? Well, Selenium is an automation testing tool! Before I go any further, let me clear out that, Software testing is of two types: Manual Testing & Automation Testing. Selenium was founded as an automation testing tool to overcome the drawbacks/ limitations of Manual testing. So, in the next section of this what is selenium blog, let's understand the challenges with manual testing. Challenges With Manual Testing Manual testing means the (web) application is tested manually by QA testers. Tests need to be performed manually in every environment, using a different data set and the success/ failure rate of every transaction should be recorded. manual testing challenges - what is seleniumLook at the above image of a poor chap, who manually verifies the transactions recorded. The challenges he is facing cause fatigue, boredom, delay in work, mistakes and errors because of manual effort. This lead to the invention of Selenium (automation testing tool). Automation Testing Beats Manual Testing Automation testing beats manual testing every time. Why? Because it is faster, needs less investment in human resource, it is not prone to errors, frequent execution of tests is possible, supports lights out execution, supports regression testing and also functional testing. Let's take a similar example to the one mentioned earlier. Suppose there is a login page and we need to verify if all the login attempts are successful, then it will be really easy to write a piece of code which will validate if all the transaction/ login attempts are a success or not (automated test case execution). Moreover, these tests can be configured in such a way that they are tested in different environments and web browsers. What else can be done? You can automate the generation of result file, by scheduling it for a particular time during the day. Then you can also automate the generation of reports based on those results and what not. The key point is that automation testing makes a tester's job a whole lot simpler. Check out the image below which shows a more relaxed environment in which the same tester is working. automation testing - what is selenium Now, let me talk about Selenium in particular. Learn Selenium From Experts Now let us see where Selenium stands in the market.

Machine Learning

System learn things without being programmed to do

Why Companies Are Relying On Chaos Engineering

The rise of microservices and cloud architectures has led to increased complexity in infrastructure with the systems becoming prone to outages and failures that leads to revenue losses. According to Gremlin, provides a framework for Failure-as-a-Service, even brief outages can heavily impact the bottom line revenue, so reducing the cost of downtime is becoming a KPI for many engineering teams. Gremlin indicated how in 2017, 98% of organizations said a single hour of downtime would costed their businesses over $100,000. The company cited an example of British Airways that suffered an outage in May 2017 which left thousands of passengers stranded and also cost the company around $102.19 million. This California-headquartered firm offers a full suite of enterprise failure testing solutions so that engineers can find out how resilient their production system is. Distributed systems are more complex than monolithic systems and it is harder to predict when and how they will fail. Some of the top drawbacks of distributed systems are unreliability of network, zero latency and that the network is homogeneous.

impede

To obstruct or interfere with; to delay

imbroglio

a difficult and embarrassing situation

Iconoclastic

attacking cherished traditions

What is Salesforce

considered SaaS, Platform as a service cause you can use it as a platform for development and build custom apps,

impecunious

having little or no money

Idolatry

idol worship; blind or excessive devotion

What is Chaos Engineering

is the discipline of experimenting on a software system in production in order to build confidence in the system's capability to withstand turbulent and unexpected conditions. ( In terms of Kafka see how long you can run a stream before it crashes)

Salesforce

it is the world's #1 customer relationship management (CRM) platform. Our cloud-based, CRM applications for sales, service, marketing, and more don't require IT experts to set up or manage — simply log in and start connecting to customers in a whole new way.

Deep Learning

machines think like humans using artificial neural networks

Igneous

produced by fire; volcanic

Hyperbole

purposeful exaggeration for effect

Ideological

relating to ideology, the set of ideas that form the basis of a political or economic system

impassive

showing no emotion

Chaos Monkey

to test system stability by enforcing failures via the pseudo-random termination of instances and services within Netflix's architecture. Following their migration to the cloud, Netflix's service was newly reliant upon Amazon Web Services and needed a technology that could show them how their system responded when critical components of their production service infrastructure were taken down. Intentionally causing this single failure would suss out any weaknesses in their systems and guide them towards automated solutions that gracefully handle future failures of this sort.

Immutable

unchangeable

Deep Learning

● Deep Learning is part of a family of machine learning methods based on learning data representations, which allows a system to automatically discover the representations needed for future detection or classification from raw data. ● Deep Learning models are inspired by the information processing and communication patterns in biological nervous systems

Examples of Reinforcement Learning

● Fly stunt manoeuvres in a helicopter ● Defeat the world champion at go ● Manage an investment portfolio ● Control a power station ● Make a humanoid robot walk ● Play many different Atari games better than humans.

RL Methods

● Model-free or model-base ● Value-base or policy-base ● On-policy or off-policy Model free acts base on what it gets from the environment and does not care about the future rewards ● Model base makes model of the environment to look into future to make a better decisions Value-base or policy-base ● Policy-based methods are directly approximating the policy of the agent and find what actions the agents should carry out at every step ● In the case of value base, instead of the probability of actions, the agent calculates the value of every possible action and choose the action with the best value On-policy or off-policy ● On-policy does not store and use the historical data ● Off-policy is the ability of the method to learn on old historical data

On-policy or off-policy

● On-policy does not store and use the historical data ● Off-policy is the ability of the method to learn on old historical data

What is Policy, Value and model ?

● Policy is the agent's behaviour, represent by Pi ○ It is a map from state to action ● Value function represent how good is each state or action. ○ It is a prediction of future reward. ○ Used to evaluate the goodness/ badness of states. ○ So selection will be easier between actions. ● Models is the agent's representation of the environment. ○ A model predicts what the environment will do next. ○ P predicts the next state. ○ R predict the next (immediate ) rewards.

Value-base or policy-base

● Policy-based methods are directly approximating the policy of the agent and find what actions the agents should carry out at every step ● In the case of value base, instead of the probability of actions, the agent calculates the value of every possible action and choose the action with the best value

Characteristic of RL

● RL does not need prior knowledge. ● There is no supervisor, only a reward signal. ● Feedback is delayed, not instantaneous. ● Time really matters. ● It can autonomously get optional policy with the knowledge obtained by trial- and error. ● Continuously interacting with dynamic environment ● Self improving and online learning can be the main characteristic of RL.

Reinforcement Learning VS Supervised Deep Learning

● Supervised learning occurs when your deep learning model learns and makes interfaces from data that has already been labeled. ● Unsupervised learning occurs when the model learns and makes interfaces form unlabeled data. ● No need to have labeled output in RL ● RL can perform better than human

TensorBoard

● TensorBoard is a widely used tool that comes with the TensorFlow framework. ● Makes it easier to understand, debug, and optimize TensorFlow programs ● Contains five types of visualizations: scalars, images, audio, histograms, and graphs.


Kaugnay na mga set ng pag-aaral

PSY 120 - Human Development - Final

View Set

FULL Culture and environment FINAL

View Set

AP Pre-Cal - Unit 3 Progress Check: MCQ Part A

View Set

Med Lit - Lecture 17 - Centrality and Dispersion and Hypothesis Review - King

View Set

Real Estate License Exam Review 13

View Set

Ch. 12 Intro to Data Processing (Systems Analysis & Design)

View Set