Image Compression Storage Policy for Openstack Swift
1. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT
A Research Paper
Presented to
Computer Engineering Department
San José State University
by
Ikwhan Chang
December 2016
2. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT ii
TABLE OF CONTENTS
ABSTRACT....................................................................................................................... 1
Introduction....................................................................................................................... 1
Background ....................................................................................................................... 2
Description of the Project................................................................................................. 2
Goals of the Project........................................................................................................... 3
Related Works................................................................................................................... 3
Technical Aspects.............................................................................................................. 8
Environments .................................................................................................................... 8
Architecture....................................................................................................................... 8
Test Scenario ..................................................................................................................... 9
Performance .................................................................................................................... 10
Challenges........................................................................................................................ 11
Conclusion ....................................................................................................................... 12
References........................................................................................................................ 13
3. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT iii
LIST OF TABLES
Table 1. The Characteristic of Software-defined Network ..................................................... 5
Table 2. The Characteristic of Software-defined Data Center ................................................ 7
Table 3. The list of the Swift’s file to adjust custom storage policy ........................................ 9
Table 4. The Result of Test Scenario ................................................................................. 10
4. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT iv
LIST OF FIGURES
Figure 1. Average bytes per page by content type ........................................................... 3
Figure 2. Content Management System (CMS) usage statistics ...................................... 3
Figure 3. Source code within diskfile.py with image compression policy ........................ 9
Figure 4. The procedure of testing to upload/load compressed image file ..................... 10
6. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 1
ABSTRACT
Recently, the cloud storage service, such as SkyDrive, Google Drive, iCloud Drive, has
been growing rapidly with almost unlimited capacity. In addition, to simply uploading
data, users can easily share with others via the web with provided URL, and because of
this feature, many people not only simply share resources such as documents, but also
upload and use within their friends. Recently, Amazon Web Service (AWS) Simple
Storage Service (S3) provides REST API and SDKs through various programming
languages have been provided, and it can be utilized for user's web development.
Therefore, the environment of web development is moving the image hosting server and
so on to use the cloud storage service, which provides nearly unlimited capacity at a price
lower than the cost of operating the server itself. In this paper, we create a cloud storage
service for these web developers using OpenStack Swift, a private cloud similar as AWS
S3, and apply the image compression policy to specific containers. Thus, when the image
is uploaded, a compression file is generated. When the web server is used as an image
server, the optimized image is provided. Ultimately, we hope that by using our image
compression policy, the speed of the web page is increased.
Keywords—Software-defined Network; Software-defined Storage; Software-defined
Data Center; OpenStack; Swift; Storage resources; Image Compression; Optimization
Introduction
In the age of the cloud computing, there are many IaaS (Infrastructure-as-a-
Service) services such as Amazon AWS (AWS, n.d.), Google Cloud (GCE, n.d.), and
Microsoft Azure (Azure, n.d.), but they are expensive in terms of testing. With the
emergence of a private cloud like OpenStack (OpenStack, n.d.), many people use it to
install it on their bear metal server. However, for four years, OpenStack is not easy to
install, and even if it is installed, it is difficult to use it because of the amount of
complicated and vast source code. The OpenStack Swift (OpenStack Swift, n.d.) project
has begun, and Swift provides users with the ability to use their private clouds simply as
a cloud storage service, not as an image processing or account management task. For
those who do not need a complicated VM (Virtual Machine), while OpenStack provides
the role of cloud OS, Swift provides the role of cloud storage OS by abstracting the entire
hardware at the storage level and providing it like the cloud drive. Swift is one of the
Software-Defined Storage (SDxCentral, n.d.), “abstracting multiple physical storages and
providing them with the same properties as SDN's basic definition” (M. David, 2014) and
availability. This concept of container and storage (SDxCentral, n.d.) can be applied to
each user's custom policy especially for each container. “If the size of the data center is
turned on, the role of storage policy is very important.” (Thereska, 2013)
In this paper, OpenStack Swift is used to providing web developers with a custom
policy to automatically compress resources such as images. Recently, web developers are
7. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 2
using resources that are cheaper and unlimited traffic with cloud storage service like
Amazon AWS S3, which enables developers such as image servers to automatically
compress resources and fix the speed of web pages thus we can increase the performance
of web page.
Background
The answer to why you need the image compression can be found in recent
Internet trends. According to the survey of Archive.org shown in Figure 1, 64% of the
online content is in image files. That is, the image file plays a very important role in
constituting the Internet page. Moreover, with the recent advances in display resolutions
such as HD images, Apple's Retina, UHD, and 5K, web developers no longer build web
pages with just one simple image. Apple's guide to providing the Retina (Apple Inc.,,
2013) suggests that “to provide high resolution, you need to provide additional images
with twice the resolution apart from regular images.” Alternatively, a vector image rather
than a pixel image, but it is difficult to create a vector for a typical photo file.
In addition to web developers, image-related services like Instagram have become
more important in recent years. Imgur (Imgur, n.d.), famous for providing Reddit (Reddit,
n.d.) images, decided to use Amazon AWS S3 (Amazon S3, n.d.), which provides both
loads balancing and caching while using multiple caching services. Also, many people
use Amazon AWS S3 as an image server for their websites in constant and reliable terms
(Jeff A., 2007). As part of our effort to increase page loading speed as well as caching
and load balancing, image optimization is the most important task, just like Forbes' expert
advice, but S3 does not automatically optimize images. On the other hand, image
optimization sites such as Compressor.io (Compressor.io, n.d.) and Tinypng (Tinypng,
n.d.) are gaining popularity, and Wordpress, which is famous for CMS (Content
Management System), occupies 47.19% of CMS as shown in Figure 2, people are paying
more attention to image compression, including more than 600,000 installations of plugin.
(Built With, 2005)
Based on this, we want to provide a service that uploads images and compresses
images using OpenStack Swift, which allows users to directly construct cloud storage.
Description of the Project
Our project works in three main ways: 1) analyzing the source code of the
complicated OpenStack Swift, how to modify the code, how to modify the individual
storage policy, and what factors can see if the developer wants to develop the storage
policy. 2) Identify the difference between the existing policy by putting the policy on the
specific storage of the actual OpenStack Swift. 3) When the user uploads the file, if the
file is an image type, develop the logic to save the compressed image. In our project, we
can create and use a compressed file in the same format as [File
Name]_compressed.[Extension] according to one upload request of user or developer.
8. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 3
Figure 1. Average bytes per page by content
type (Http Archive, 2016) Figure 2. Content Management System
(CMS) usage statistics (BuiltWith® Pty
Ltd, 2016)
Goals of the Project
Our goal is as follows: 1) Analyze the Swift source code as our first step. The
OpenStack Swift source code consists of a huge amount of Python sources. The
diskfile.py is composed of more than 3000 lines of source code and more than 50 methods.
So, understanding Swift is our first step. 2) Analyze the swift proxy code flow. Once you
have completed the primary analysis, you will understand what each method does for
Swift, which consists of the actual proxy server and the object server. 3) Identify the files
that we need to modify to implement an additional storage policy. Analyze the source to
see where you can link the policy to the outbound. 4) Identified the most suitable image
compression technique. PIL (Python Image Library), Open CV, etc. to see what image
compression algorithm can be applied. 5) Modified the Swift code to add the new image
compression policy and integrated the compression procedure 6) Developed a web page
to demonstrate the usage of the new policy.
Related Works
A. Cloud Computing
Cloud computing is a service that uses all the computing resources from the
application to the data as much as you want in the internet environment and pays as much
as you use. There are two types of services: Infrastructure as a Service (IaaS), Platform as
a Service (PaaS), and Software as a Service (SaaS). Cloud-based services that take
advantage of the scalability and flexibility of the cloud have different data management
structures depending on the type of data serving. “To ensure the availability of data and
9. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 4
services, data is duplicated, or triple managed.” (Chowdhury & Boutaba, 2010)
(Thereska, et al., 2013)
For example, a cloud storage service provides a certain size of volume for each
cloud storage user, and the user uses it. Moreover, “the data uploaded by the user is
managed in triplicate.” (Schaffrath, et al., 2009) However, there are two issues that need
to be addressed in the way data is managed using an existing cloud. First, space is wasted
because a certain size of the volume is allocated. Second, it is difficult to manage
different types of data.
B. Software-Defined Network (SDN)
The software-defined network uses software technology to define and utilize
networks. SDN's core philosophy is to separate network functions into hardware
functions and software functions to increase programmability and increase flexibility. In
the past, SDN has been responsible for data processing, policy management, and data
management in the data network. Moreover, a control layer area in which a control layer
is formed. The control layer area is separated so that it can be controlled by SDN
controller and application program. OpenFlow (McKeown, et al., 2008) is a
representative protocol for implementing SDN defined between the control layer and the
data layer in SDN.
With SDN, the packet path can be controlled through programming rather than
network equipment. In fact, the benefits associated with this have already been suggested
even though SDN is not currently discussed. However, ensuring programmability and
increasing flexibility by standards that are not specific to a specific vendor is possible on
a software-based rather than hardware-based basis. Therefore, SDN technology is
becoming a key technology among the major software base technologies. In particular,
the use of SDN has changed the characteristics of the data center as shown in Table I
Currently, SDN is considered as a representative example of the combination of
abstraction through network virtualization and the possibility of programming using
software.
C. Software-Defined Storage (SDS)
Software-defined storage (SDS) configures the storage pool and stores it in the
user's policy. This model increases the ease of management of storage by automatically
allocating storage according to the application requirements and providing it with a single
software control point. The SDS simplifies the management aspects by providing one
control point. It can be implemented using existing hardware infrastructure, and various
heterogeneous hardware products can be used. Also, various storage types such as blocks,
files and object storage can be integrated and provided.
10. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 5
D. Software-Defined Data Center (SDDC)
Software-defined data centers refer to data centers that virtualize and operate IT
infrastructures such as servers, storage, and networking. Software defined the assessment
that datacenters can virtualize all their IT infrastructures and use them more efficiently
and agile with automated software has received a great deal of attention in the IT industry
today.
Data centers can be deployed using OpenFlow-compatible com- modify equipment with
only the necessary features, without expensive hardware with advanced networking
capabilities, separated into hardware responsible for the data layer and software for
controlling it.
Increased value as network centrally managed software by enabling full control of the
network through programming.
Network complexity in the cloud environment can be solved through network
virtualization using SDN.
Supports automation, auto-scaling, and service chaining, such as network changes due to
movement of virtual machines can be immediately confirmed through programming and
software can be supported.
Table I. The Characteristic of Software-defined Network
E. Software-Defined Anything/Everything (SDx)
As virtualization and cloud computing evolve, the software has emerged as a
software-as-a-service (SaaS), a cloud-based service that is now out of the traditional
simple client-server model. At the same time, the evolving part of the data center is the
infrastructure that provides servers and networks with physical stability and network
scalability. In the late 1990s, the data center, which was dominated by the Internet Data
Center (IDC), is now equipped with a very complex infrastructure consisting of
thousands and tens of thousands of servers, network and storage resources, driven by
virtualization and cloud development.
Software-defined Anything / Everything (SDx), one of the top 10 strategic
technology trends announced by Gartner in 2014 has become a buzzword as market
momentum for establishing software-based standards in these cloud computing and data
center markets has become increasingly strong term. (Gartner, 2013) The concept of
'software definition,' which embodies the philosophy of using software technology to
increase the agility and interoperability of areas that were directly controlled by hardware,
as it has expanded to include business and services in recent years.
11. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 6
Market momentum based on 'software defined' has naturally spread to storage,
infrastructure, and data center as a whole, beginning with industry trends related to SDN.
Just as SDN, which defines software-dependent parts of the software, has advantages
such as automation, auto-scaling, and service chaining, software definitions are being
evaluated as a concept of leapfrogging hardware dependencies by taking advantage of the
software.
This definition of software spreads not only in today's network but also in all
areas of servers, storage, and infrastructures, resulting in the emergence of Software-
Defined Storage (SDS) and Software-Defined Data Center (SDDC) terms. Software-
defined Anything / Everything. Today, SDx is used as a business term to leverage the
benefits of "software definition" not just at the level of the infrastructure such as network,
storage, and data center, but also at the business and application service levels
Table II explains the baseline points that can be referred to as 'software definition,'
taking a software-defined data center as an example. As each of the above criteria is met
and each criterion is combined to optimize the infrastructure and increase utilization at
the application level, innovation in 'software definition' is accelerated. These innovations
include choosing the right infrastructure to meet SLAs and dynamic configurations that
optimize asset utilization.
What is important here is that software definition can increase flexibility and
enable programmability by standards that are not dependent on a specific vendor. Agility
and interoperability are two important philosophies that represent SDx. In the case of
electronics, the specific methods for each field such as network and storage are slightly
different, but the flexibility is improving. On the other hand, in the latter case, there is a
tendency for related companies to make various moves such as pushing the SDx initiative
to strengthen the market standard.
F. OpenFlow
One of the biggest trends associated with SDx is standardization. OpenFlow,
which is a representative example of SDN standardization, was initially led by academia,
not by industry. The OpenFlow protocol, implemented and standardized by Stanford
University professors and students, has been transferred to the Open Networking
Foundation (ONF) since version 1.1 and released 1.4 in October 2013, and is now
standardizing on version 1.5. OpenFlow standardization allows customers to break away
from network vendor dependencies and form a user-driven network ecosystem that
enables customers to take advantage of network pricing, scalability, reliability,
performance and other requirements.
12. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 7
Abstraction – the decoupling of a resource from the consumer of the resource (also
commonly referred to as virtualization when talking about compute resources). This is a
powerful foundation as the virtualization of these resources should enable us to define
‘models’ of infrastructure elements that can be managed without requiring management
of every element individually.
Instrumentation – opening up of the decoupled infrastructure elements with
programmatic interfaces (typically XML-based RESTful APIs).
Automation – using these APIs, wiring up the exposed elements using scripts and other
automation tools to remove “human middleware” from the equation. This is an area
where traditional information security tools are woefully inadequate.
Orchestration – beyond script-based automation, automating the provisioning of data
center infrastructure through linkages to policy-driven orchestration systems where the
provisioning of compute, networking, storage, security and so on is driven by business
policies such as SLAs, compliance, cost and availability. This is where infrastructure
meets the business.
Table II. The Characteristic of Software-defined Data Center (Gartner, 2013)
G. OpenStack
Various of SDx initiatives are being pursued not only on the network but also
through OpenStack, Open Compute Project, and Open Rack. OpenStack is an open
source project initiated by NASA and RackSpace in July 2010. (Rackspace Inc., 2010) It
is a cloud infrastructure management solution project with more than 10,000 developers
from 121 countries as of July 2013. The Open Compute Project (www.opencompute.org)
is a Facebook-led initiative created to share data center design and related experiences in
2011, with Open Rack for energy and cost savings and scalability. One of its server rack
product specifications has been announced. These SDx initiatives offer the advantage of
being able to flexibly meet a wide range of customer requirements, as well as reducing
operational costs (OPEX) from the operator's perspective. It also provides convenience
for automation such as auto-scaling and service chaining.
It is noteworthy that initiatives are underway to establish various standardizations
with the direct participation of several SDx providers. Since NASA announced that it
would not participate in OpenStack in May 2012 (NASA, 2012), VMware joined the
OpenStack Foundation in September 2012. (Gigaom, 2012) Also, many vendors,
including Cisco and HP, directly participate in OpenStack Summit will make a major
announcement. Moreover, the Facebook-led Open Compute project includes hardware
manufacturers such as Intel to discuss low-power mainboards and network interfaces.
The main reason for existing players to participate actively in the SDx market,
which has been undergoing such a change, seems to be efforts to secure software-based
13. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 8
initiatives because existing operators worry about profitability deterioration and
competition expansion.
Technical Aspects
In the case of our project, we developed using various elements of the web. First,
we created the API interface through Node.js for the REST API provided by OpenStack
Swift. Second, using the latest web development technologies, such as AngularJS and
Bootstrap, the test client's programs have made the same experience for front-end
developers. Third, by installing the Swift-All-In-One (SAIO) (SAIO, n.d.) version of
OpenStack, existing users can easily install Swift and run Object Server. Fourth, we used
Bower (Bower, n.d.) and NPM to manage the dependency of the test client. Finally,
Github allows the source code to be easily followed when committing custom libraries to
other users, depending on the commit and archive. To understand this project, it is
necessary to understand basic REST API of SDN, SDS and the web, and techniques such
as Node.js and AngularJS.
Environments
For our project, we needed to build a server environment first. The server used
Google Compute Engine and used two virtual CPUs, 7.5GB of memory and two 100GB
block storage hard disks. The operating system used Ubuntu Server 14.04 LTS image and
OpenStack Swift 2.11.1dev46. I installed the proxy server and the storage server on one
server by referring to the SAIO manual.
Architecture
For the development of our project, Swift itself modified the swift/obj/diskfile.py
file as shown in Figure 3. First, we named the image compression policy
COMP_POLICY and applied it to the file in Table III. The first time we tried to modify
the proxy server, we decided to change diskfile.py to handle the actual file saving by
changing the way. Therefore, first add the CompressedDiskFileManager module as
shown in Figure 3, and register it in policy. Later, by defining CompressedDiskFileWriter
and CompressedDiskFileReader, we create a part that can handle HTTP request /
response and Swift command. Our program defines a new file writing part, so we mainly
worked on CompressedDiskFileWrite, and I got the file stored in this area and uploaded
the compressed file through Swift command.
14. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 9
swift/obj/diskfile.py
swift/common/storage_policy.py
swift/proxy/controllers/obj.py
Table III. The list of the Swift’s file to adjust custom storage policy
Figure 3. Source code within diskfile.py with image compression policy
Test Scenario
As shown in Figure 4, there are two test scenarios. First, there is REST API
processing when the user uploads the file and processing by the actual OpenStack Swift.
Second, when the user presses the Run the Demo button after the upload is completed, the
original image and the compressed image are called at the bottom of the test page It is
about comparing image load speed and size with Chrome Developer Tools.
15. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 10
More specifically, in a web page composed of AngularJS and Dropzone.js
(Dropzone.js, n.d.), the user requests a file upload via drag-and-drop. The client invokes
the file upload portion of the Node.js middleware via an Ajax request. In the middleware,
the actual byte stream of the file in the multipart form is first transmitted through the
Swift REST API implemented by us. The Swift server receives the request and handles
file storage in CompressedDiskFileWriter in diskfile.py mentioned in the above
architecture. We do the actual processing in the _finalize_put_() method with our
implemented image compressor. After that, through Run the Demo, AngularJS makes a
content request to middleware and shows it through REST API.
Figure 4. The procedure of testing to upload/load compressed image file
Performance
Table IV shows our test results. A total of four images were tested, showing an
average 28.28% reduction in image capacity and an average increase in page throughput
of 32.46%. The result is larger in the visual area that the user can see. In fact, it takes 8
seconds to load a 15MB HD image shown in Table IV, Image#4 While the compressed
HD file shows a result of 2.74 seconds, which still allows the user to view the image
quite nicely.
Uncompressed Compressed Reduce Rate (%)
Size
(KB)
Load Speed
(Sec) Size (KB)
Load Speed
(Sec) Size Load Speed
Image #1 1,434 1.16 657 0.5 -45.82 -43.10
Image #2 6,554 4.13 1,011 1.12 -15.43 -27.11
Image #3 969 2.66 217 0.69 -22.39 -25.90
Image #4 15,667 8.13 4,618 2.74 -29.48 -33.70
Average -28.28 -32.46
Table IV The Result of the Test Scenario
16. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 11
Challenges
In the case of OpenStack Swift, the file from the HTTP request or Swift command
request is divided into 500 bytes, separated into chunks, and then transmitted to the
corresponding object server in order. We first tried to compress the file and send it to the
server before splitting the file into chunks. However, since the number of chunk files in
the compressed file differs from the number of chunks in the actual compressed file, the
logic for counting transmitted chunks is so varied that it fails to analyze them. We tried to
compress and then re-compress the file stored on the object server, but it also failed to
fetch metadata and hash. Since we used SAIO (Swift-All-In-One), object server and
proxy server existed on one server, but in practice, these servers will be separated, so it is
necessary to process file compression processing in the proxy server in advance. Also, we
spent a great deal of time analyzing the complex Swift source code and spent much time
building test scenarios and test client environments.
17. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 12
Conclusion
Through this project, we created a policy from the installation of OpenStack Swift
and connected and tested the actual container. In SDDC, we knew that SDS was the basis
so that we could manage huge physical hardware through the policy, and once again
gutted the importance of policy. As the number of users using the latest image server in
Amazon AWS S3 increases, the importance of image compression is expected to increase
in future S3. Thus, other services such as Google Cloud Storage are more interested in
web optimization thus we need to give customization permission to in our project. Since
the image compression was simply used for web optimization, we did not adopt in-depth
algorithms. However, if the policy becomes a structure that adopts file optimization based
on content type in future policy, SDDC we hope to do it properly.
18. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 13
References
1) Amazon Web Service (AWS). (n.d.). Retrieved from http://aws.amazon.com/.
2) Amazon Simple Storage Service (S3) . (n.d.). Retrieved from
http://aws.amazon.com/s3/.
3) Google Compute Engine. (n.d.). Retrieved from http://cloud.google.com.
4) Microsoft Azure. (n.d.). Retrieved from http://www.windowsazure.com/.
5) OpenStack. (n.d.). Retrieved from http://www.openstack.org/.
6) OpenStack Swift. (n.d.). Retrieved from http://swift.openstack.org/.
7) What is Software-Defined Storage? – Definition. (n.d.). In SDxCentral. Retrieved
from https://www.sdxcentral.com/cloud/definitions/what-is-software-defined-
storage/
8) M. David, ‘‘Introduction to SDN (Software-defined Networking),’’ Nov. 2014.
[Online]. Available: https://www.youtube.com/watch?v=DiChnu_PAzA.
9) Thereska, E., Ballani, H., O'Shea, G., Karagiannis, T., Rowstron, A., Talpey, T., ... &
Zhu, T. (2013, November). IOFlow: a software-defined storage architecture.
In Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems
Principles (pp. 182-196). ACM.
10) Average Byte per Page by Content Type. (Mar. 2016). In Http Archive. Retrieved
from
http://httparchive.org/interesting.php#bytesperpage?ictd%5Bmaster%5D=vid~72
0f2d5d-60be-46fc-92c4-
1774ba093d21&ictd%5Bil583%5D=rlt~1441669636~land~2_3853_seo_aa73a52
e6449ecff40e9a5c66e7bb93f.
11) Serving Images With Image Sets. (Sep. 2013). In Apple. Retrieved from
https://developer.apple.com/library/content/documentation/NetworkingInternet/C
onceptual/SafariImageDeliveryBestPractices/ServingImagestoRetinaDisplays/Ser
vingImagestoRetinaDisplays.html#//apple_ref/doc/uid/TP40012449-CH3-SW1.
12) Imgur. (n.d.). Retrieved from http://imgur.com.
13) Reddit. (n.d.). Retrieved from http://www.reddit.com.
14) Alan S. (2013, June 4). TECH TUESDAY: OUR TECHNOLOGY STACK,
Archived at http://blog.imgur.com/2013/06/04/tech-tuesday-our-technology-stack/.
19. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 14
15) Jeff A. (2007, March 6). Using Amazon S3 as an Image Hosting Service, archived
at https://blog.codinghorror.com/using-amazon-s3-as-an-image-hosting-service/.
16) Compressed.io. (n.d.). Retrieved from http://compressor.io.
17) Tinypng. (n.d.). Retrieved from http://tinypng.com.
18) Chowdhury, N. M. K., & Boutaba, R. (2010). A survey of network
virtualization. Computer Networks, 54(5), 862-876. doi:
dx.doi.org/10.1016/j.comnet.2009.10.017
19) Bari, M. F., Boutaba, R., Esteves, R., Granville, L. Z., Podlesny, M., Rabbani, M.
G., ... & Zhani, M. F. (2013). Data center network virtualization: A survey. IEEE
Communications Surveys & Tutorials, 15(2), 909-928.
doi:10.1109/SURV.2012.090512.00043
20) Schaffrath, G., Werle, C., Papadimitriou, P., Feldmann, A., Bless, R., Greenhalgh,
A., ... & Mathy, L. (2009, August). Network virtualization architecture: proposal
and initial prototype. In Proceedings of the 1st ACM workshop on Virtualized
infrastructure systems and architectures (pp. 63-72). ACM.
doi:10.1145/1592648.1592659
21) McKeown, N., Anderson, T., Balakrishnan, H., Parulkar, G., Peterson, L.,
Rexford, J., ... & Turner, J. (2008). OpenFlow: enabling innovation in campus
networks. ACM SIGCOMM Computer Communication Review, 38(2), 69-74.
doi:10.1145/1355734.1355746
22) Janessa R., Gartner, (2013, October 8). Gartner Identifies the Top 10 Strategic
Technology Trends for 2014 [Press release]. Retrieved from
http://www.gartner.com/newsroom/id/2603623.
23) Neil M., Gartner, (2013, January 29). Software Defined Data Centers and
Security–What’s in a Name?. Archived from
http://blogs.gartner.com/neil_macdonald/2013/01/29/software-defined-data-
centers-and-securitywhats-in-a-name/.
24) Lew M., Rackspace Inc., (2010, July 19). Opening The Rackspace Cloud [Press
release]. Retrieved from http://blog.rackspace.com/open-stack.
25) Ali L., NASA, (2012, June 04). Nebula, NASA, and OpenStack [Press release].
Retrieved from https://open.nasa.gov/blog/nebula-nasa-and-openstack./
26) Barb D., Gigaom, (2012, September 7). Finally! VMware joins the OpenStack
Foundation, this time for real [Press release]. Retrieved from
20. IMAGE COMPRESSION STORAGE POLICY FOR OPENSTACK SWIFT 15
https://gigaom.com/2012/09/07/finally-vmware-joins-the-openstack-foundation-
this-time-for-real/.
27) Built With. (2005). CMS Usage Trend Statistics. BuiltWith® Pty Ltd. Retrieved
from https://trends.builtwith.com/cms.
28) Swift-All-In-One (SAIO) Installation Manual. (n.d.). Retrieved from
http://docs.openstack.org/developer/swift/development_saio.html.
29) Bower. (n.d.). Retrieved from http://bower.io.
30) Dropzone.js. (n.d.). Retrieved from http://dropzonejs.com.