l Need a holiday recipe? AllRecipes and Microsoft Azure cloud have you covered
itMYti.com < New IT WebNews
Category: news    |    Added: 2016-12-21 17:55:03    |    View: 141

How AllRecipes uses the cloud to power through the holiday cooking rush

recipes
Credit: AllRecipes
"; adDivString = "
" + adString + "
"; IDG.GPT.defineGoogleTagSlot(slotName ,[[320,50],[300,250],[300,50]]); } placementDiff = applyInsert($(this), adDivString); if (DEBUG) { console.log("Just placed an ad and the placementDiff is: " + placementDiff); } placementTarget = cumulativeHeight + placementDiff + INTERMODULE_HEIGHT + AD_HEIGHT_BUFFER; } else if (moduleCounter < articleDRRModuleList.length){ var elementId = "drr-mod-"+moduleCounter; var moduleDivString = "
"; modules.push(elementId); placementDiff = applyInsert($(this), moduleDivString); if (DEBUG) { console.log("Just placed a module and the placementDiff is: " + placementDiff); } placementTarget = cumulativeHeight + placementDiff + INTERMODULE_HEIGHT + MODULE_HEIGHT_BUFFER; moduleCounter++; } loopCounter++; } // Avoid placing elements too soon due to non-large figures inflating the cumulative height if ($(this).is("figure") && !$(this).is("figure.large")) { cumulativeHeight += GRAF_HEIGHT; } else { cumulativeHeight += $(this).height() + GRAF_HEIGHT; } } }); // end $("#drr-container").children().each() // clone Related Stories module to come in after eighth para in article body for mobile breakpoint display var $relatedStories = $('.related-promo-wrapper'); if ($relatedStories.length) { var $relatedStoriesClone = $relatedStories.clone(); $relatedStoriesClone.insertAfter( "#drr-container > p:eq(7)"); } // For mobile only, place ad after second paragraph. if (firstMobileAdHtml) { $(firstMobileAdHtml).insertAfter("#drr-container > p:eq(1)"); } var $insiderPromo = $('.insider-promo-wrapper'); if ($insiderPromo.length) { var $insiderPromoClone = $insiderPromo.clone(); $insiderPromoClone.insertAfter( "#drr-container > p:eq(1)"); } IDG.GPT.trackOmniture(); // Add Right rail module content var placeModule = function( data ) { var placementId = $(data).attr("data-placement-id"); $( "#"+placementId ).html( data ); }; for (i=0; i" + adString + "
"; } /** * @param jqo Original jquery object target * @param divString The div to be inserted. * @return Difference in height between original placement target and final target. * Checks first 6 elements for an allowable placement (600 pixel window). * If none, place element in first location that does not follow a reject element. */ function applyInsert(jqo, divString) { if (DEBUG) { console.log("applyInsert at top and jqo index is: " + jqo.index()); } for (var i=0; i<=6; i++) { $thisElement = jqo.nextAll().andSelf().slice(i, i+1); if (DEBUG) { console.log("Checking first six and i is: " + i + " and this element index is " + $thisElement.index() ); } if ($thisElement.index() < 0) { break; } if (allowPlacement($thisElement)) { return addElement(jqo, $thisElement, divString); } } if (DEBUG) { console.log("No nearby allows so just place in first spot that is not after reject."); } var numElements = jqo.nextAll().length; var startIndex = jqo.index(); for (var i=startIndex; i<=numElements; i++) { var $element = $("#drr-container").children().eq(i); // This element is eligible when not null, not in placement index, and previous element is not reject if ($element != null && (placementIndex == null || placementIndex.indexOf(i) == -1) && !isReject($element.prev())) { return addElement(jqo, $element, divString); } } if (DEBUG) { console.log("Not going to place element: return 0."); } return 0; } /** * @param jqo Original jquery object * @param allowElement Element that is good placement for module/ad * @param divString The div to be inserted before the good element * @return placementHeightDiff Diff in height between original placement target and current target. * * If element is not too close to the end the insert the div before allowable element. * Add element index to placementIndex to keep track of which elements already have placements */ function addElement(jqo, allowElement, divString) { var offset = allowElement.index() - jqo.index(); if (DEBUG) { console.log("addElement: jqo index is " + jqo.index() + " allowElement index is " + allowElement.index()); } if (elementNotNearEnd(allowElement, RIGHT_PIXEL_WINDOW)) { allowElement.before(divString); if (DEBUG) { console.log("addElement: Adding " + allowElement.index() + " to placementIndex."); } placementIndex.push(allowElement.index()); if (offset == 0) { return 0; } else { return getHeightDifference(jqo,allowElement); } } else { if (DEBUG) { console.log("addElement: Near the end so do NOT add."); } return 0; } } function getHeightDifference(jqo,allowElement) { var offset = allowElement.index() - jqo.index(), height = 0, children = null; if (offset > 0) { children = $("#drr-container").children().slice(jqo.index(), allowElement.index()); } else { children = $("#drr-container").children().slice(allowElement.index(), jqo.index()); } if (children != null) { children.each(function(i) { if (DEBUG) { console.log("About to add this element's height to heigh diff offset"); console.log($(this)); } height += $(this).height() + GRAF_HEIGHT; }); } if (offset < 0) { height *= -1; } if (DEBUG) { console.log("getHeightDifference: offset was " + offset + " and height diff is : " + height); } return height; } function allowPlacement(jqo) { if (jqo.prev() != null && isReject(jqo.prev())) { return false; } return true; } function isReject(jqo) { if (jqo != null) { if (jqo.is('h2') || jqo.is('h3') || jqo.is('h4') || jqo.is('h5')) { if (DEBUG) { console.log("isReject: found header"); } return true; } } return false; } // Returns true if height of all elements after this one is more than 500; false otherwise function elementNotNearEnd(element, pixelWindow) { if (pixelWindow === null) { pixelWindow = 500; } if (element === null) { return false; } var remainingHeight = 0, children = $("#drr-container").children().slice(element.index()); if (children === null) { return false; } children.each(function(i){ remainingHeight += $(this).height(); }); if ( remainingHeight > pixelWindow) { return true; } else { if (DEBUG) { console.log("Element too close to end. Remaining height is: " + remainingHeight + " and window is " + pixelWindow); } return false; } } } // end function executeDRRMobile() function executeDRRDesktop() { var heroImgHeight = $('figure.hero-img').outerHeight(true); if (heroImgHeight === null) { heroImgHeight = 0; } var galleryItemHeight = $('figure.thm-gallery').outerHeight(true); if (galleryItemHeight === null) { galleryItemHeight = 0; } var atAglanceTop = $('.at-a-glance.top').height(); if (atAglanceTop === null) { atAglanceTop = 0; } var drrContainerHeight = $('div#drr-container').outerHeight(true); var topIMUheight = $('#topimu').height(); if (topIMUheight === 0) { topIMUheight = 600; } var relatedPromoHeight = $('div.related-promo-wrapper').outerHeight(true); if (relatedPromoHeight === null) { relatedPromoHeight = 0; } var videoHowtoHeight = $('div#video-howto-wrapper').outerHeight(true); if (videoHowtoHeight === null) { videoHowtoHeight = 0; } var teadsInreadHeight = $('div.teads-inread').height(); if (teadsInreadHeight === null) { teadsInreadHeight = 0; } var unrulyAdHeight = $('.unruly_in_article_placement').height(); if (unrulyAdHeight === null) { unrulyAdHeight = 0; } //just in case the in article ads are picked up... var collapsibleAdHeight = unrulyAdHeight + teadsInreadHeight; var workingRRheight = ( (heroImgHeight + galleryItemHeight + atAglanceTop + drrContainerHeight) - (topIMUheight + relatedPromoHeight + videoHowtoHeight) ); workingRRheight = workingRRheight - collapsibleAdHeight; var DEBUG = false; if (DEBUG) { console.log('-----working RR height = ' + workingRRheight); } var articleDRRModuleList = ["dealposts","products.latest-reviews"], moduleUrls = [], modules = [], moduleCounter = 0, loopCounter = 0; var adPositions = new Array(0,1,3); // IMU, IMU, module, IMU, module if (false) { var dealpostsIdx = articleDRRModuleList.indexOf("dealposts"); if (dealpostsIdx > -1) { articleDRRModuleList.splice(dealpostsIdx, 1); adPositions = [0, 1, 2]; } } for (var i=0; i 650) { numItems = 1; } if (workingRRheight > 1350) { numItems = 2; } if (workingRRheight > 2300) { numItems = 3; } if (workingRRheight > 2950) { numItems = 4; } if (workingRRheight > 3650) { numItems = 5; } for (var currIndex=0;currIndex
"; adDivString = "
" + adString + "
"; IDG.GPT.defineGoogleTagSlot(slotName ,[[320,50],[300,250],[300,50]]); } //$('#drr-container > p').first().before(adDivString); //$('#drr-top-ad').append(adDivString); $(adDivString).appendTo('#drr-top-ad'); if (DEBUG) { console.log("-----Just placed an AD currIndex = " + currIndex); } } else if (moduleCounter < articleDRRModuleList.length){ var elementId = "drr-mod-"+moduleCounter; var moduleDivString = "
"; modules.push(elementId); //$('#drr-container > p').first().before(moduleDivString); $('#drr-top-ad').append(moduleDivString); if (DEBUG) { console.log("-----Just placed a MODULE and currIndex = " + currIndex); } moduleCounter++; } } //end for loop IDG.GPT.trackOmniture(); // Add Right rail module content var placeModule = function( data ) { var placementId = $(data).attr("data-placement-id"); $( "#"+placementId ).html( data ); }; for (i=0; i" + adString + "
"; } } // end function executeDRRDesktop()

Wondering what to have for Christmas dinner? AllRecipes.com will be a popular site to check this holiday season … and this year it’s using Microsoft Azure’s cloud.

AllRecipes, founded in 1997 and owned by Meredith Corp., has undertaken a two-year migration to Azure, the IaaS public cloud. AllRecipes services 1.5 billion visitors each year who view an average of 95 recipes per second, 66% of which are done on mobile devices.

The company’s load is cyclical: On a Sunday afternoon there is 60% more traffic on the website compared to a Monday morning. Just like a retailer, the holiday season is AllRecipe’s crunch time. Eight weeks in November and December including five days in particular – Christmas, Thanksgiving, the day before each and the Super Bowl – create the largest surge in traffic.

Instead of building out a data center footprint to the company’s maximum load capacity, managing all that infrastructure and paying licenses fees, AllRecipes is hosted almost completely in the cloud now. But it wasn’t always that way.

+MORE AT NETWORK WORLD: Why Microsoft’s cloud chief believes Microsoft is in prime position | How Rackspace will stay alive in the cloud: Stop competing with Amazon, start partnering +

john keane Allrecipes

John Keane, CTO of AllRecipes

About two years ago CTO John Keane joined the company and with a fresh set of eyes, questioned the capital expense of hosting the company’s infrastructure in a series of collocation providers such as Internap. “Our cooks come to us in a moment of need,” he says. “They’re sitting thinking about what they’re going to make for dinner, they’re checking a recipe on their phone while dropping the kids off at soccer, or are in the store making sure they have all the ingredients needed for a recipe. When they need to engage, they expect a fast and responsive site.”

Given the company’s variable workload demands, Keane believed the cloud would be a natural destination to host AllRecipes’ workloads. AllRecipes builds many of its apps in Visual Studio, Microsoft’s integrated development environment (IDE), mostly in C# - a programming language developed by Microsoft. These factors made Azure an easy integration point for public cloud.

Microsoft Azure now hosts the AllRecipes production website, along with other affiliated brands such as EatingWell.com, Parenting and Shape. AllRecipes uses mostly virtual machines, load balancers, SQL servers and a combination of various open source platforms, such as Cassandra to power its operations. It uses Datadog and New Relic to monitor, troubleshoot and optimize its environment, which Keane says are invaluable tools for both real-time and historical feedback and analysis.

AllRecipes uses Amazon Web Services too, particularly for apps that are primarily Linux based. Keane says it’s not a problem to have workers managing different clouds. Azure, he says, is great for hosting Windows workloads and integrating with the PaaS environment. AWS seems to have more granular infrastructure configuration options, he’s found.

“Microsoft is certainly catching up,” he says about the competition between the two dominant IaaS public cloud vendors. AllRecipe’s Enterprise Agreement with Microsoft, which already included using desktop machines and licensing made onboarding Azure – with some discounts – an attractive financial proposition too, Keane says.

This story, "Need a holiday recipe? AllRecipes and Microsoft Azure cloud have you covered " was originally published by Network World.

To comment on this article and other PCWorld content, visit our Facebook page or our Twitter feed.
Related:
Shop Tech Products at Amazon
Notice to our Readers
We're now using social media to take your comments and feedback. Learn more about this here.
source: Pcworld

Category: review    |    34 minutes ago    |    View: 2

Today we're revisiting a mid-range GPU battle between the Radeon RX 570 4GB and GeForce GTX 1060 3GB. It's been a little over a year since we compared these two head to head in an extensive 28 game battle, so we thought it was about time to take another look now that GPU prices seem to be coming back down to more reasonable prices.

Category: news    |    8 hours ago    |    View: 58

Sinclair Broadcast Group has been trying for months to broker a deal to buyout Tribune Media. Engadget reports the company recently proposed to “offload” 21 stations to show officials that it was not trying to stifle competition. However, the FCC&hellip;

Category: news    |    9 hours ago    |    View: 15

Pininfarina, the Italian car design firm best known for Ferrari’s iconic look, announced in March that it was developing its own all-electric hypercar. Not much was initially shared about the PFO but that has since changed as the design house&hellip;

Category: news    |    10 hours ago    |    View: 11

I have to say; when I saw Siemens retro-fitted 1965 autonomous Ford Mustang attempt the hill climb at the Goodwood Festival of Speed, I was quite unimpressed. In fact, I was somewhat embarrassed for the engineers as the car swerved&hellip;

Category: news    |    10 hours ago    |    View: 0

Amazon's annual day of outlandish deals and sales, Prime Day, has officially kicked off. Unfortunately, while customers are enjoying the fruits of Amazon's massive success, the company itself is facing some internal struggles.

Category: news    |    11 hours ago    |    View: 13

Samsung is expected to match Apple’s rumored trifecta of iPhones with a trio of Galaxy S10 devices packing a variety of screen sizes.

Category: news    |    12 hours ago    |    View: 24

Uber has had its fair share of problems over the years. It's faced down numerous federal investigations, class-action lawsuits, and scrutiny from the National Transportation Safety Board following a fatal March crash involving an autonomous Uber vehicle.

Category: news    |    13 hours ago    |    View: 10

In October of last year, Epic brought lawsuits against several cheaters in its smash-hit battle-royale game Fortnite. To be clear, these were not your average cheaters. These were people who allegedly profited by either providing hacks or promoting them. Most&hellip;

Category: news    |    13 hours ago    |    View: 0

Northern Springs is a land expansion for Fallout 4 that’s said to be larger than both Far Harbor and Nuka World, official DLCs straight from Bethesda. It’s located at the top left corner of the map and can be explored&hellip;

Category: news    |    14 hours ago    |    View: 16

Saving the environment seems to be the collective focus of the tech industry as of late. Even companies that compete quite heavily with each other -- such as Google and Apple -- are united by the steps they've taken to&hellip;




Download Latest PC Softwares

Category: download-managers    |    Added: 44 minutes ago    |    View: 0
KeepVid Pro 7.3.0.2 + Portable Download - downloadwise.com

KeepVid Pro 7.3.0.2 + Portable Download Latest Version for Windows. It is full offline installer standalone setup of KeepVid Pro 7.3.0.2.

KeepVid Pro 7.3.0.2 is a very useful application that can be used for downloading audio and video content from different websites and after downloading it will also allow you to convert the files into various different file formats. Watching the videos as well as listening to the music online is an excellent idea but sometimes you are not connected to the Internet which won’t allow you to access your favorite content. This situation can be avoided by downloading the content from this program. You can also download Internet Download Manager IDM 6.28 Build 9.

Category: 3d-designing    |    Added: 10 hours ago    |    View: 4
Artlantis Studio 7.0.2.2 Free Download - downloadwise.com

Artlantis Studio 7.0.2.2 Free Download Latest Version for PC. Its full offline installer standalone setup of Artlantis Studio 7.0.2.2 for 64.

Artlantis Studio 7.0.2.2 is a very handy and ideal application that has been developed for the users who need to perform very high resolution rendering easily and in real time. With this application you can create a very highly professional 2D and 3D designs. This application also allows you to create panoramic images as well as animations. You can also download Abvent Artlantis Studio.

Category: system-tuning    |    Added: 17 hours ago    |    View: 6
O & O ShutUp10 1.6.1397.1 Free Download - downloadwise.com

O & O ShutUp10 1.6.1397.1 Free Download. A very handy application which can be used for disabling telemetry and for localization detection.

O & O ShutUp10 1.6.1397.1 is a very handy application which can be used for disabling telemetry and for localization detection. The Telemetry components in Windows 10 and the way they are affectingt he privacy of the users is a very controversial topic since the release of the most recent offering from Microsoft’s operating system. With this application you can manually tweak the security settings of Windows 10. You can also download Beyond Compare 4.2.5 + Portable.

Category: utilities    |    Added: 18 hours ago    |    View: 0
Display Driver Uninstaller 17.0.8.9 Free Download - downloadwise.com

Display Driver Uninstaller 17.0.8.9 Free Download Latest Version. Full offline installer standalone setup of Display Driver Uninstaller.

Display Driver Uninstaller 17.0.8.9 is a very handy application that has been developed to let you immediately uninstall NVIDIA, AMD as well as Intel display drivers. This application has not been equipped with complex settings or configuration parameters. You can also download IObit Uninstaller Pro 6.1.0.20.

Category: ironcad-design-collaboration-suite-2018-free-download    |    Added: 3 days ago    |    View: 23
IronCAD Design Collaboration Suite 2018 Free Download - downloadwise.com

IronCAD Design Collaboration Suite 2018 Free Download Latest Version for Windows. Full offline installer standalone setup of IronCAD Design.

IronCAD Design Collaboration Suite 2018 is a very handy and powerful set of tools that has been developed for the professionals as well as design engineers who are required to create and edit 2D and 3D models. This imposing application has got all the tools which are required for making your ideas a reality. You can also download progeCAD 2019 Professional.

Category: utilities    |    Added: 3 days ago    |    View: 3
Total Commander 9.20 Final + Portable Download - downloadwise.com

Total Commander 9.20 Final + Portable Download Latest Version for Windows. Full offline installer standalone setup of Total Commander 9.20.

Total Commander 9.20 Final + Portable is a very handy application which will allow you to replace your default method of the file browsing and management. Most of the activities now a days use computer and for file management Total Commander 9.20 Final + Portable is the application to look for. You can also download Total Commander Ultima Prime.

Category: utilities    |    Added: 3 days ago    |    View: 4
CCleaner Professional 5.44.6577 + Portable Free Download - downloadwise.com

CCleaner Professional 5.44.6577 + Portable Free Download New Setup. Its full offline installer standalone setup of CCleaner Professional.

CCleaner Professional 5.44.6577 + Portable is a very handy application which can be used for secure cleaning of your system. This application performs in-depth analysis of all the areas of your system. This application will detect the unused or the invalid entries that clog the Windows registry. You can also download CCleaner Professional 5.41.6446 + Portable.