Cloud World

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Tuesday, 17 August 2010

WebFilings streamlines SEC reporting using Google App Engine

Posted on 11:05 by Unknown




Greetings App Engine Developers!




My name is Dan Murray. I'm a Founder and Managing Director at WebFilings http://www.webfilings.com. In March 2010 my company launched a first-of-its-kind SaaS solution that dramatically improves the process of developing and filing financial reports with the Securities Exchange Commission (SEC). Google App Engine provides the foundation for our backend. Since our launch, my company is experiencing what can only be described as hyper-growth. Everyday, as our team manages the rapid growth of our user community, I am thankful we chose App Engine when we started WebFilings.




Our Challenge




Each quarter, thousands of public and private companies in the US report their earnings to the SEC. The SEC reporting process is complex, time-consuming, and expensive. Reporting requirements and accounting codes are in a state of constant flux. The effects of misreported finances can be extremely costly to a company both financially and in reputation.




Prior to starting WebFilings, my partners and I spoke with dozens of companies and listened to them describe their approach to SEC reporting. While each company has its own unique challenges and methods, the general theme was the same: today's word processors and email just don't cut it for financial reporting. SEC reporting requires more sophisticated collaboration and data management capabilities than current tools provide.




We formed WebFilings almost immediately after these meetings and started building our product. We knew our software would manage a large amount of very granular data for which history and revision control are important. Individual data entities would be interrelated and a change to one may require a cascade change to hundreds, thousands, or more entities. Our product needed rich collaboration capabilities to allow multiple authors to work on a single report simultaneously and communicate effectively throughout the reporting process. Finally, because our software would manage sensitive, pre-release financial information, our product had to be state-of-the-art when it came to information security.




Why Google App Engine?




We started working with Google App Engine right after it launched in 2008. Since we started, our development team has grown from a few guys in a basement to an extensive worldwide organization. From the beginning, the choice of using GAE for our backend was obvious. App Engine provides many benefits to a business building a large-scale, data intensive product on a short timeline.





App Engine gives us a flexible, object-oriented datastore that enables us to iterate in a way that is just not possible with traditional database and ORM software. When combined with the ease of deployment to the cloud, we are able to develop at a rapid pace and deliver timely, incremental solutions for our customers' emerging needs.




In addition, App Engine appspot gives us a secure place for our customers' data. It's been clear from the beginning that the App Engine Team works very hard to plug each and every possible security hole. Large organizations all over the world are switching to Google Apps. Real peace-of-mind comes with Google's reputation for data security. I can think of no other company in the world that takes security more seriously and actually walks-the-walk.




Finally, our costs with Google App Engine have been unbelievably low. In past ventures, I got used to huge startup costs and large expenditures each month for hardware infrastructure and support staff. That just isn't the case with App Engine. We don't need a large IT staff to support our product because App Engine scales automatically. Our costs have been and continue to be orders of magnitude lower than anything I've ever experienced.




How we built our implementation




I had always heard that building a word processor is one of the hardest things you can ever do as a software engineer. Well now I know for a fact that it is. In addition to building a word processor, we set out to create a spreadsheet editor as well. Both applications run in a web browser and are interoperable in a way that enables you to "link" very granular data between them. Add in the ability to share documents and track revisions among a large team of collaborating editors, and building WebFilings software has easily been one of the most challenging endeavors during my 20+ years in software.




Using WebFilings rich editor to file financial reports





Google App Engine has been absolutely key to our success in ramping up development quickly and building our product in a very short timeframe. We built our product using App Engine's python runtime environment. The combination of python and App Engine's datastore enabled us to take an iterative and incremental approach to building our backend.




WebFilings software is based upon a multi-tier, service-oriented cloud mashup as shown below.




WebFilings' architecture






Our presentation tier consists of three end-user applications. Our editor and reader applications are implemented using the Adobe Flex SDK and delivered to the users desktop using Adobe Flash Player 10. Our administration application is AJAX-based and implemented with HTML, CSS, Javascript, and JQuery.




Our editor and reader applications combine a traditional word processor with a spreadsheet editor. Each contains logic that controls the content, layout, and display of formatted text. The foundation of these applications is Adobe’s Text Layout Framework, an extensible, open source, ActionScript library that leverages the text engine in Adobe Flash Player 10.





Our administrative application contains logic that controls CRUD operations for accounts and users. Through our administration application one administers usernames, passwords and password policy, user account access, subscription levels, and various account and document permissions.





Our business tier is developed using Google App Engine. Web services are implemented using python and the django web application framework. Our Flex/Flash-based editor and reader communicate with the business tier by exchanging serialized binary representations of WebFilings business objects through a Django-based web services API. The AJAX-based administration application communicates with the business tier using JQuery. Service requests and responses are sent via HTTPS.





The business tier implements logic in two sub-tiers. The first of these sub-tiers is responsible for basic business logic that provides methods for foundation and often repeated operations such as creation of a new document. The second of these sub-tiers is responsible for business processes that chain together basic business services to accomplish larger, more complex operations such as sharing a users’ changes to a document.





Business service and process methods access data through the App Engine Data Services API. This API provides a python-based abstraction layer consisting of convenience methods that unify the data tier API with security sandbox methods designed to prevent unauthorized data access across Google appspot instances.




WebFilings end-user application interoperates with read-only search services and transient translation services hosted using Amazon EC2. These web services include an XBRL taxonomy search service, and XBRL validation service, an XBRL instance document viewer, and an EDGAR HTML translation service.





The XBRL taxonomy search service, and XBRL validation service, and EDGAR HTML translation service use Apache Tomcat and the Java Servlet API. In addition, the XBRL taxonomy search service uses MySQL and the Hibernate ORM SDK for storage, access, and indexing of the SEC’s public taxonomy data.





The XBRL instance document viewer is a Microsoft .NET Framework-hosted implementation of the U.S. Security Exchange Commission (SEC) XBRL reference viewer.





We've been fortunate that the App Engine Team continues to churn out innovations at a rapid pace. AppStats has helped us identify problem areas and fine tune performance. Task Queues have given us a good solution for processing large amounts of data and helped us reduce request latency. Memcache has provided us up to 10x performance increase for critical areas of our application. We've been able to absorb these innovations quickly without having to re-architect.





Future Apps on App Engine
As WebFilings grows, we will continue to expand our product and the web services that support it. When we find opportunities to build new applications there is no doubt that Google App Engine will be at the core.





Please visit http://www.webfilings.com to learn more about WebFilings software. Our team is growing very fast and we're always looking for top software talent. Check out our Careers page If you want a new and exciting challenge with one of the best software teams around.





Posted by Dan Murray, Co-Founder and Managing Director, WebFilings
Email ThisBlogThis!Share to XShare to Facebook
Posted in | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Bridging Mobile Backend as a Service to Enterprise Systems with Google App Engine and Kinvey
    The following post was contributed by Ivan Stoyanov , VP of Engineering for Kinvey, a mobile Backend as a Service provider and Google Cloud ...
  • Tutorial: Adding a cloud backend to your application with Android Studio
    Android Studio lets you easily add a cloud backend to your application, right from your IDE. A backend allows you to implement functionality...
  • 2013 Year in review: topping 100,000 requests-per-second
    2013 was a busy year for Google Cloud Platform. Watch this space: each day, a different Googler who works on Cloud Platform will be sharing ...
  • Easy Performance Profiling with Appstats
    Since App Engine debuted 2 years ago, we’ve written extensively about best practices for writing scalable apps on App Engine. We make writ...
  • TweetDeck and Google App Engine: A Match Made in the Cloud
    I'm Reza and work in London, UK for a startup called TweetDeck . Our vision is to develop the best tools to manage and filter real time ...
  • Scaling with the Kindle Fire
    Today’s blog post comes to us from Greg Bayer of Pulse , a popular news reading application for iPhone, iPad and Android devices. Pulse has ...
  • Who's at Google I/O: Mojo Helpdesk
    This post is part of Who's at Google I/O , a series of guest blog posts written by developers who are appearing in the Developer Sandbox...
  • A Day in the Cloud, new articles on scaling, and fresh open source projects for App Engine
    The latest release of Python SDK 1.2.3, which introduced the Task Queue API and integrated support for Django 1.0, may have received a lot ...
  • SendGrid gives App Engine developers a simple way of sending transactional email
    Today’s guest post is from Adam DuVander, Developer Communications Director at SendGrid. SendGrid is a cloud-based email service that deliv...
  • Qubole helps you run Hadoop on Google Compute Engine
    This guest post comes form Praveen Seluka, Software Engineer at Qubole, a leading provider of Hadoop-as-a-service.  Qubole is a leading pr...

Categories

  • 1.1.2
  • agile
  • android
  • Announcements
  • api
  • app engine
  • appengine
  • batch
  • bicycle
  • bigquery
  • canoe
  • casestudy
  • cloud
  • Cloud Datastore
  • cloud endpoints
  • cloud sql
  • cloud storage
  • cloud-storage
  • community
  • Compute Engine
  • conferences
  • customer
  • datastore
  • delete
  • developer days
  • developer-insights
  • devfests
  • django
  • email
  • entity group
  • events
  • getting started
  • google
  • googlenew
  • gps
  • green
  • Guest Blog
  • hadoop
  • html5
  • index
  • io2010
  • IO2013
  • java
  • kaazing
  • location
  • mapreduce
  • norex
  • open source
  • partner
  • payment
  • paypal
  • pipeline
  • put
  • python
  • rental
  • research project
  • solutions
  • support
  • sustainability
  • taskqueue
  • technical
  • toolkit
  • twilio
  • video
  • websockets
  • workflows

Blog Archive

  • ►  2013 (143)
    • ►  December (33)
    • ►  November (15)
    • ►  October (17)
    • ►  September (13)
    • ►  August (4)
    • ►  July (15)
    • ►  June (12)
    • ►  May (15)
    • ►  April (4)
    • ►  March (4)
    • ►  February (9)
    • ►  January (2)
  • ►  2012 (43)
    • ►  December (2)
    • ►  November (2)
    • ►  October (8)
    • ►  September (2)
    • ►  August (3)
    • ►  July (4)
    • ►  June (2)
    • ►  May (3)
    • ►  April (4)
    • ►  March (5)
    • ►  February (3)
    • ►  January (5)
  • ►  2011 (46)
    • ►  December (3)
    • ►  November (4)
    • ►  October (4)
    • ►  September (5)
    • ►  August (3)
    • ►  July (4)
    • ►  June (3)
    • ►  May (8)
    • ►  April (2)
    • ►  March (5)
    • ►  February (3)
    • ►  January (2)
  • ▼  2010 (38)
    • ►  December (2)
    • ►  October (2)
    • ►  September (1)
    • ▼  August (5)
      • App Engine 1.3.7 SDK Bugfix Release
      • Multi-tenancy Support, High Performance Image Ser...
      • WebFilings streamlines SEC reporting using Google ...
      • Practical Report Generation on App Engine
      • Rapid cloud development using App Engine for the C...
    • ►  July (5)
    • ►  June (6)
    • ►  May (3)
    • ►  April (5)
    • ►  March (5)
    • ►  February (2)
    • ►  January (2)
  • ►  2009 (47)
    • ►  December (4)
    • ►  November (3)
    • ►  October (6)
    • ►  September (5)
    • ►  August (3)
    • ►  July (3)
    • ►  June (4)
    • ►  May (3)
    • ►  April (5)
    • ►  March (3)
    • ►  February (7)
    • ►  January (1)
  • ►  2008 (46)
    • ►  December (4)
    • ►  November (3)
    • ►  October (10)
    • ►  September (5)
    • ►  August (6)
    • ►  July (4)
    • ►  June (2)
    • ►  May (5)
    • ►  April (7)
Powered by Blogger.

About Me

Unknown
View my complete profile