Journal of KIIT. Vol. 15, No. 1, pp. 35-44, Jan. 31, 2017. pISSN 1598-8619, eISSN 2093-7571 35 http://dx.doi.org/10.14801/jkiit.2017.15.1.35
A Business Driven Scalable Cloud Computing Service Platform (PaaSXpert) Abhilash
Sreeramaneni*, Bokuk
Seo*, and
Chan
KOH**
This study was supported by the Research Program funded by the Seoul National University of Science and Technology.
Abstract A cloud computing is significant with several advantages such as, collaboration, high performance, cost efficiency, high availability, resource utilization and disaster recovery in today’s latest technologies. A new era of cloud computing is PaaS(Platform as a Service), which offers a services to end users with one mouse click. PaaS platforms takes the advantage of elastic cloud computing IaaS(Infrastructure as a Service) layer by providing a computational works for developers by a rich set of runtimes and frameworks. We build our own PaaS platform “PaaSXpert”, by taking an advantage of cloud foundry, an open community cloud platform. Cloud Foundry is a PaaS platform, let anyone can build, deploy, run and scale the applications. PaaSXpert is a highly-available distributed system built on cloud foundry by extending with several features like, developer tools, user portal (both government and enterprises) and monitoring tools etc. This paper illustrates a ecosystem PaaS platform and Software as a Service(SaaS) (market place), where consumers can deploy their application from numerous fields (eg., IoT, big data and business application etc). We explain advantages and components of our PaaS platform PaaSXpert. Comparative analysis represents our PaaS platform is more efficient than existing domains in cost efficiency, performance and services for end users.
요 약
클라우드 컴퓨팅은 협업 고성능 비용 절감 고가용성 자원 활용 및 재해 복구 등의 여러 가지 중요한 이 점을 가지고 있는 최신 기술이다 클라우드 컴퓨팅의 새로운 시대는 한 번의 마우스 클릭으로 사용자에게 서 비스를 제공하는 서비스로서의 플랫폼 이다 플랫폼은 개발자를 위해 런타임과 프레임 워크 같은 개발 환경을 제공함으로써 클라우드 컴퓨팅 서비스로서의 인프라 부분에서 장점을 가지고 있다 본 논 문에서 클라우드 파운드리의 오픈 커뮤니티 클라우드 플랫폼을 기반으로 한 효율적인 플랫폼인 의 구축 내용을 설명한다 클라우드 파운드리는 누구나 애플리케이션을 구축 배포 실행 확장할 수 있게 해 주는 플랫폼이다 는 클라우드 파운드리를 기반으로 구축된 고가용성 분산 시스템이 다 가 확장한 기능으로는 개발자 도구 정부와 기업을 위한 사용자 포털 모니터링 도구가 있다 본 연구에서 소비자가 자신의 애플리케이션을 여러 분야 빅데이터 및 비즈니스 응용 프로그램 등 에 배포할 수 있는 플랫폼 생태계와 마켓플레이스 에 대해서 설명한다 플랫폼 의 장점과 구 성 요소에 대하여 설명한다 시뮬레이션 분석을 통하여 본 플랫폼이 비용 절감 성능 사용자를 위한 서 비스 측면에서 기존에 존재하는 플랫폼들보다 더 효율적임을 보였다 ,
,
,
,
.
PaaS (
)
. PaaS
IaaS (
)
.
,
PaaS
PaaSXpert
.
PaaS
,
,
,
. PaaSXpert
. PaaSXpert
,
,
,
.
(IoT,
PaaS
SaaS (
.
)
)
. PaaS
PaaS
PaaSXpert
,
,
.
keywords cloud computing, IaaS, PaaS, SaaS, ecosystem, PaaSXpert, cloud foundry, IoT, big data * **
Crossent Inc. ž Corresponding Author: Chan KOH Dept. of Computer Science & Engineering, Seoul National University of Professor, The Seoul National University of Science & Technology Science & Technology, 232 Gongreung-Ro, Nowon-Gu, Seoul, 01811, Korea, Received: Oct. 30, 2016 Tel.: +82-2-970-6705, Email:
[email protected] Revised: Dec. 19, 2016 Accepted: Dec. 22, 2016
36 A Business Driven Scalable Cloud Computing Service Platform (PaaSXpert)
Ⅰ
[1], 2) PaaS(Platform as a Service)[2], and 3) SaaS
Developers can choose this PaaS platform for free and have the ability to use their own code and tools. Similar competitors and PaaS platforms are IBM Bluemix[6], Pivotal[7], OpenShift[8], HP Hellion[9] etc. For infrastructure management, CF uses a BOSH open source tool for life cycle and deploy management which is discussed in upcoming sections. This article is the extension of [8], and illustrates our
(Software as a Service)[3]. By taking an advantage of
total overview of our PaaS platform PaaSXpert.
these services, a cloud platform is able to provide
We discuss difference between cloud foundry platform and our PaaS platform PaaSXpert in Section II. Section III presents an overview architecture of market place and perform comparative analysis between our PaaSXpert platform and PaaS competitors. At last, we conclude and outline the future work in Section IV. (Note: Figures in this paper are solely for the use of Croissant. No part Figures may be circulated, quoted, or reproduced for distribution outside the Croissant organization without prior written approval from Croissant.)
. Introduction
Today’s cloud computing has become a highlyavailable distributed system for software applications, computing resources, rapid elasticity, cost reduction. Generally cloud computing is differentiated in to three important layers, 1) IaaS(Infrastructure as a Service)
highly scalable services for end-users. In this paper we will discuss about PaaS platform and the transformation of SaaS solution to PaaS offering. Now a days application developers are capable in selecting a PaaS platforms to host their applications for management
and
administration
tasks.
Although
applications deployment over the cloud doesn't assure the high availability and performance, nevertheless a proper architecture is designed for a cloud applications. An important challenge for software architects is PaaS cloud platform, which provide the wide range of services (i.e., multi tenancy, performance and scalability etc.) which should be well integrated with applications.
Ⅱ
. Cloud Foundry & PaaSXpert
Multi tenancy is a great advantage for the enterprises by using PaaS, because this technology maximize the
We discuss the cloud foundry components and
resource sharing between several consumers with
PaaSXpert, extension version of cloud foundry.
efficient performance. Moreover the service providers
2.1 Cloud Foundry
can reduce the resource utilization as wells as reduce the service cost for end-users[4]. Cloud foundry(CF) a cloud computing PaaS initiative, which grabs a recent attention with its multi-vender foundation. The cloud foundry is an open source cloud platform licensed under Apache 2.0[5] which supports Java, PHP, Node.js, Python, Go and Ruby. This open-source PaaS platform is highly customizable and allow the developers to code their services in multiple languages and frameworks. The five important features of CF are, 1) highly scalable, 2) devOps-friendly workflows, 3) fast application development and deployment, 4) multi-tenant compute efficiencies and 5) reduced chance of human error.
The main advantage of cloud platforms allows anyone to deploy their services and provides a service worldwide in a few minutes. After app starts running successfully the cloud platform can easily scale in and out in both horizontal and vertical. Cloud platform represents a next step evolution in cloud era, by enabling a end-user to focus only their applications without concerning about underneath infrastructure. All the cloud platforms are not equally created, some have limitations
such
as
languages,
frameworks
and
deployment restriction on a single cloud. Cloud foundry (PaaS) has become an industry standard, so
Journal of KIIT. Vol. 15, No. 1, pp. 35-44, Jan. 31, 2017. pISSN 1598-8619, eISSN 2093-7571 37 that anyone can deploy your apps on your own
number’s for a cell container.
computing platform as shown in Fig. 1. Cloud
2) Authentication
foundry is open for anyone so that any developer can
OAuth2 Server(UAA) and Login Server: Every
deploy their app on cf either using the existing tools
application
or with modifications to their code.
authentication. OAuth2 Server (UAA) & Login Server
running
on
cloud
foundry
requires
works together to provide an identity management. 3) App Lifecycle Cloud Controller(CC) and Diego Brain: Cloud Controller manages the deployment of applications, when developer pushs a application the PaaS platform targets the CC. Next CC-Bridge directs the Diego Brain to coordinate an application on Diego cells to stage and run. The DEA (Droplet Execution Agent) in CC performs these life cycle task, moreover CC maintains the records of Org’s, Space’s, User
Fig. 1. Cloud platform infrastructure Source: http://www.crossent.com/, http://www.paasxpert.com/
2.2 Cloud Foundry Components
Roles and Services etc. Applications running on Diego-Cells should monitor their states such as starting, staging and stopping, these roles is taken care by the health manager in Diego. The nsync, BBS and cell perform a distributed
Fig. 2 shows the detail architecture of cloud foundry.
approach of monitoring, these components works together. Nsync: CC sends a message when user scales an application
and
writes
the
changes(i.e.,
instances,
memory, disk etc.) into Diego BBS database(Desired LRP). BBS processes the monitoring into desired and actual LRP(Long-time Running Process) and then launches or kills the application to ensure match
Fig. 2. Cloud foundry components Source: http://www.crossent.com/, http://www.paasxpert.com/
Cell Reps monitor the container and provide actual LRP value. 4) App Storage and Execution
1) Routing Router routes the incoming traffic to an appropriate components either a CC(Clod Controller) or Diego cell components,
between actual and desired LRP.
actually
where
application
runs.
Periodically, router queries Diego BBS(Bulletin Board System) on which diego cell is running the application container. And then update the routing table with the new IP addresses of each cell VM and their port
Blobstore is a repository system for applications to store large binary files. Where Github or Gitlab cannot easily manage because these systems are designed for code. Blob store includes application packages, build packs and droplets. However we can configure this blob store either an internal or external(i.e. S3 ) storages.
38 A Business Driven Scalable Cloud Computing Service Platform (PaaSXpert)
Diego Cell: Each application running on container
Our PaaSXpert platform can deploy on any IaaS
(PaaS) has VM which is running on diego cell. Which executes the application to start, stop and run locally and manages the VM containers and report
infrastructure(i.e., Openstack, AWS, and VSphere etc.). To ensure the trustworthiness for our consumers we deploy our PaaSXpert platform on our own Infrastructure
app’s data to BBS and Loggregator. In diego the DEA manages the application container running on VM’s.
as a Service(Openstack). Openstack is a free open source software platform for cloud- computing licensed under Apache 2.0. Our PaaSXpert platform is extension
5) Services Service Brokers: The applications running on diego cells typically require backend services such as database, database structure and messaging etc. While developer is ready to deploy the application, he/she can bind the service instance to application. These backend binding process is taken care by service
version of cloud foundry. As illustrated above by taking advantage of cf components we build our own development tools, user portal and monitoring tools to meet the end-user needs. Fig. 3 shows the overview of our PaaSXpert architecture built on cloud foundry.
broker. 6) Messsaging VM’s in cf communicate each other through HTTP and HTTPS protocol internally and store the temporary messages and data in Consul and BBS. Consul server stores the long lived data such as IP-addresses and distributed locks, which prevents the components from duplicating. Diego BBS stores the updated and disposal data such as application status, cells etc. Route-emitter component uses NATS protocol to broadcast the latest routing tables to routers. In diego the NATS Message Bus carried all the internal communication between the components. 7) Metrics and Logging In metrics collector, the cf platform has its own metrics agent to collect the metrics(i.e. cpu, memory, network, disk usages etc.) from all the components. By this information operators can manage the CF deployment. Loggregator system constantly streams the container and VM’s logs to developers.
Ⅲ
. PaaSXpert
This section presents the architecture overview and screen shots of our user, development and sample monitoring portals.
Fig. 3. PaaSXpert overview Source: http://www.crossent.com/, http://www.paasxpert.com/ 1) CF Core Services. After setting the PaaS platform(cf) on IaaS (openstack), the interface acts as a bridge between PaaS and IaaS which leads to create the SaaS. The main role of our interfaces are that user can manage the apps data, organization, spaces, and scaling etc from their OS command lines. Our interfaces can support wide range of operating systems(i.e. Windows, Linux, Mac OS X.) 2) Development tools. This development tool is not default component of cloud foundry, our developer team develops these tools to create wide range of services from variety of fields(ie., AI, IoT, big data, cloud services, business applications etc.). We develop the PaaS services using BOSH an open-source application lifestyle management tool. After testing the services locally our developers
Journal of KIIT. Vol. 15, No. 1, pp. 35-44, Jan. 31, 2017. pISSN 1598-8619, eISSN 2093-7571 39 will make available all these services into the market place. Moreover developers can have a look into developers portal for more information of platform such as, number of containers and applications running, total disk & memory usage, and status of applications(i.e. staged, pending and failed) etc as shown in Fig. 4 and Fig. 5. 3) User Portal.
worldwide with one mouse click to their consumers.
An individual user or organization can select our
However it is also possible for users to scale in and
services available in market and make available
Our development team develops the additional services as per the user request. Any consumer enjoys our services on pay as you go basis. Our user portal is very user friendly when compared to other PaaS platforms as shown in Fig. 5. Moreover user or organizations
can
create
their
space
for
their
organizations and monitor the status of applications. out from the users portal.
Fig. 4. Developers tool Source: http://www.crossent.com/, http://www.paasxpert.com/
Fig. 5. Users portal Source: http://www.crossent.com/, http://www.paasxpert.com/
40 A Business Driven Scalable Cloud Computing Service Platform (PaaSXpert)
Fig. 6. Sample monitoring portal Source: http://www.crossent.com/, http://www.paasxpert.com/ also provide comparative analysis of PaaSXpert and
4) Monitoring Tools. Monitoring
tools
offer
a
great
performance
experience for end users. Because the existing PaaS
other PaaS platforms in Market(Note: This session is extension of [10]).
platforms don’t provide a high level monitoring tools
In Fig. 5 we can see our market place, where
for end users. This component provides three various
users can search the services and purchase on pay as
types of monitoring services, 1) controller VM’s (cf),
you go basis. We have two types of service
2) container VM’s (diego), 3) application (apm).
development process. First, if we want push the
The first two services are provided for developer’s
service to our market place we have to create a
side and third one is for end-user. Because there will
container (Bosh-Release)
be a situation either VM’s or containers will have a
PaaSXpert platform. Second, if our consumer have
situation for high cpu, memory, disk and network
docker container ready application we will push the
usage. This information is collected by our monitoring
application to our market place. Finally, application
agents and sends a notification to developers and
provider consumers can enjoy the services with one
consumers. Then users or developers can look into the
mouse click. In this paper we will explain the
problems. Our monitoring tools have a efficient alarm
procedure of creating container using Bosh-Release.
module which sends the real-time notification via
For this application development, we considered a
email, sms, collaboration tool(Rocket Chat) and alerts
gitlab a central repository system which gives an
the user or developer if there is any problem with
distributed code hosting service for organizations. For
applications or VM’s. Our sample monitoring UI is
gitlab architecture, features and bosh-release work flow
shown in Fig. 6.
please refer[10].
3.1 MarketPlace We present the how our developers develop the services for market place in PaaSXpert platform and
and
push
to
into
our
This process takes seven steps to create a application container. 1) setting up jobs, 2) creating templates, 3) setting up packages, 4) creating source file, 5) creating and uploading bosh-release, 6) creating deployment yaml file, 7) deploying your release. As
Journal of KIIT. Vol. 15, No. 1, pp. 35-44, Jan. 31, 2017. pISSN 1598-8619, eISSN 2093-7571 41 we illustrated in[10], gitlab bosh-release requires three jobs (VM’s) 1) gitlabhq; where the actual application code resides, 2) PostgreSQL, act as a backend database to store the user and gitlab information’s and projects, 3) Redis, this job act as a data structure
dependency graph reveals the runtime dependencies that need to be added to the packages block of the particular job spec. 7) Creating Templates for Job: ž Update monit files: Every job needs a way to
for a gitlab.
start and stop. You provide that by writing a control script and updating the monit file. Update the monit file for each of your jobs .
1) Creating gitlab bosh-release directory: A release directory(i.e. bosh init release gitlab bosh-release) contains four pieces of software that work together. 1)
ž Update job spec files: At compile time, BOSH transforms templates into files, which it then replicates on the job VMs. The template names and file paths
jobs, 2) packages, 3) source and 4) Blobs. Jobs describe pieces of the service or application you are releasing. Packages provide source code and
are among the metadata for each job that resides in the job spec file. In the job spec file the templates block contains key/value pairs, where each key is
dependencies to jobs. Source provides packages the non-binary files they need. Blobs provide packages of the binaries they need, but they are different from
template name and each value is the path to the corresponding file on a job VM. ž Templates: We have divided the templates into
binaries that are checked into a source code repository. 2) Creating jobs: First navigate into the release
four subdivisions to control the job configuration according to the deployment properties. ž Templates/bin: It controls the job utilities setup.
directory and create job skeleton for each job. Generate your job name(i.e., bosh generate job ) which creates a
ž Templates/config: This section provides the total configuration for jobs. ž Templates/ data (properties): This section define
spec, monit files and template folder for each jobs. 3) Creating packages: Packages give the information needed to prepare the binaries and compile
the properties of job which rely on software binary packages. ž Templates/helpers: This section is triggered by job
dependencies for your jobs(i.e. bosh generate package ) which create a packaging and spec files for you jobs.
properties to configure the functions during the deployment time. 8) Setting up Packages for Job:
4) Update packaging specs: Update the empty spec file(script) with package name and dependencies, where BOSH can find the binaries and other files that
ž Update the Spec file: Update the spec file in packages, with the particular job dependencies and files as shown in above table.
the package needs at compile time. 5) Create packaging scripts: BOSH interprets the locations you record in the files section as being
ž Create the packaging script: Update the packaging script based on your job dependencies and files to install and deploy the concern job on cf.
either in the src directory or in the blobs directory (BOSH looks in src first.). At compile time, BOSH takes the source files referenced in the package specs,
9) Creating Source folder (src) for job: This is the location(folder) where BOSH can find the binaries and other files that the package needs at compile time.
and renders them into the executable binaries and scripts that your deployed jobs need. 6) Update job specs with dependencies: A
10) Create a dev_release: All the elements needed to create a release should be in a one place, known as dev_release(i.e. bosh create release force). For the
server, used as database, cache and message broker
42 A Business Driven Scalable Cloud Computing Service Platform (PaaSXpert)
dev release, use the force option with the bosh create release command. BOSH prompts for a release name, and assigns a dot-number version to the release. For example in our release 1) gitlab-0+dev.1.yml, 2) index.yml is created. 1) gitlab-0+dev.1.yml: It creates jobs, packages and its dependencies with its version, fingerprint and sha1. 2) Index.yml: It creates the release with its identification number and its version and format. Upload the new dev_release by using bosh upload release from your release directory. 11) Create a deployment yaml file for your release
which contains release details, network block for jobs, compilation, jobs, update, resource pool blocks. 12) Deploying the release using bosh deploy and verify the status of the container as shown in Fig. 7. After checking the status, our development team performs deep testing and finally uploads to market place as shown in Fig. 5.
3.2 Comparative analysis Fig. 8 shows the comparative analysis between our PaaSXpert with other PaaS platforms in market.
Fig. 7. Bosh deployment status Source: http://www.crossent.com/, http://www.paasxpert.com/
Fig. 8. Comparative analysis of PaaS Source: http://www.crossent.com/, http://www.paasxpert.com/
Journal of KIIT. Vol. 15, No. 1, pp. 35-44, Jan. 31, 2017. pISSN 1598-8619, eISSN 2093-7571 43 As per comparative analysis our PaaSXpert is more effective
than
existing
PaaS
platforms.
Wei-Jen Wang, "Efficient Hybridge Auto-scaling
Our
for OpenStack Platforms", in Proceedings of Smart
organization recently receives the best PaaS platform
City/SocialCom/SustainCom (SmartCity), 2015 IEEE
award in South Korea. The main characteristics of our
International Conference on, pp: 19-21, Dec. 2015.
platform are 1) operation support, 2) developer
[2] David Gesvindr and Barbora Buhnova, "Architectural
support, 3) SaaS development support, 4) secure
Tactics for the Design of Efficient PaaS Cloud
hybrid cloud, 5) high availability, 6) easy and safe
Applications",
SW maintenance, 7) rapid development of standardized
Architecture (WICSA), 2016 13th Working IEEE/
Software, and 8) efficient use of HW resources.
IFIP Conference on, pp. 5-8, Apr. 2016.
in
Proceedings
of
Software
[3] Tobias Ladhe, Carl-Mikael, Andreas Nilsson, and
Ⅳ
Elin Uppstr, "Platform Design Considerations for
. Conclusion
Transforming a SaaS Solution to a PaaS Offering",
Cloud computing has become a mandatory service
in Proceedings of Developments of E-Systems
for every organization because of its advantages such
Engineering (DeSE), 2015 International Conference
as scalability, elasticity and ubiquity etc. In this paper
on, pp. 13-14, Dec. 2015.
we present the architectural design of PaaS-Cloud
[4] R. Krebs, C. Momm, and S. Kounev, "Architectural
applications to best of our knowledge. This paper
Concerns in Multitenant SaaS Applications", in
illustrates the components of cloud foundry and an
Proceedings of CLOSER’12, pp. 426-431, Mar.
open source PaaS platform. Our respective organization developed a PaaS platform called PaaSXpert, an extension
version
of
cloud
foundry
such
2012. [5]
Antonio
Corradi,
Luca
Foschini,
Sebastiano
as,
Fraternale, DianaJ. Arrojo, and Malgorzata Steinder,
development tools, monitoring tools, and user portal
"Monitoring applications and services to improve
and collaboration tool as shown in above pictures.
the
Key features of our platform are 1) efficient use of
ofComputers and Communication (ISCC), 2014
HW resources, 2) rapid application development, 3)
IEEE Symposium on, pp. 23-26, Jun. 2014.
easy and safe SW maintenance, 4) ensuring high availability. container
And
we
application
also to
illustrate
our
creation
marketplace,
of
where
consumers can search their services and use as pay as you go basis.
Cloud
Foundry
PaaS",
in
Proceedings
[6] http://www.ibm.com/cloud-computing/bluemix/, [Accessed: Oct, 20, 2016] [7] https://pivotal.io/, [Accessed: Oct, 20, 2016] [8] https://www.openshift.com/, [Accessed: Oct, 20, 2016]
Our future work represents industrial standard with numerous services in our PaaSXpert market-place,
[9] http://www.hpe.com/helion, [Accessed: Oct, 20, 2016]
especially IoT, big data, healthcare, AI and business
[10] Abhilash Sreeramaneni and Chan KOH, "Central
applications etc, to meet the end-user needs.. Next we
Repository System on Cloud Foundry Platform",
will
Proceedings of KIIT Summer Conference, pp.
have
deep
dive
into
multi-tenant,
scaling,
spinning, auto failure detection and pipeline tools in our platform. References
[1] Chia-Ching Chen, Shao-Jui Chen, Fan Yin, and
81-84, Jun. 2016.
44 A Business Driven Scalable Cloud Computing Service Platform (PaaSXpert)
Chan KOH
Authors
1974. 2 : B.S. in Mechanical Engineering, Kyunghee
Abhilash Sreeramaneni
University, Seoul, Korea. 1974. 10 ~ 1978. 2 : The Republic
2011 : Bachelour’s degree in Department of Computer
of Korea Naval officer
Science and engineering, Anna
(Lieutenant Junior Grade, Military Service).
University, Chennai, INDIA. 2011. 8 ~ 2013. 1 : Velmurugan P.vt. Limited, Andhra Pradesh,
1983. 8 : M.S. in Computer Science, Yonsei University, Seoul, Korea. 1987 : P.E.(Professional Engineer) of Information
Tirupati, India. 2013. 9 ~ 2015 . 8 : M.S. student, Department of Computer Science and Engineering, Seoul National University of Science & Technology, Seoul, KOREA. 2016. 1 ~ present : Associate Architect, Consulting Division in Crossent Inc.(http://www.crossent.com/),
Systems Management, Approved by MOST(Ministry of Science and Technology), Korea. 1991. 2 : Ph.D in Engineering, Kyunghee University, Seoul, Korea 2008. 2 : Ph.D in Economics, Seoul National University, Seoul, Korea.
Seoul, Korea. Research interests : Artificial-Intelligence, Software engineering, Ubiquitous Computing,
and Algorithm
& Computation theory.
2014 ~ 2015 : Adjunct professor, The Abu Dhabi University, Abu Dhabi, UAE. 1983. 10 ~ present : Professor, The Seoul National University of Science & Technology, Seoul, Korea.
Bokuk Seo
2005 ~ present : Adjunct professor, The Helsinki 2008 ~ 2009 : M.S in Software Engineering, Carnegie Mellon University, Pittsburgh, United States of America. 2010 ~ present : Senior Architect, Managing Director in Crossent Inc. (http://www.crossent.com/),
Seoul, Korea. 2014 ~ present : PM in Open- PaaS E-Government Framework. Research Interests : PaaS, Devops, SW Engineering Methodologies.
Metropolia University of Applied Science, Espoo, Finland. Research Interests : Technology Policy, Management Information Systems, Graphics, Game Production.