extend ../_components/base.pug

block pagetitle
    title Deployment Options  

block css 
    link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/deployment-opts.css?ver=" + config.version)



block main
    - global.pageHref = "features"
    - config.hdrClassName = "hdr__blue"
    include ../_components/header.pug


    section.innerhero
        .container.innerhero__cont
            .innerhero__main
                .innerhero__pre.pb-3 Apache Ignite
                h1.h1.innerhero__h1.innerhero__mega Deployment <br>Options
            img.innerhero__pic.innerhero__pic--deploy(src="/img/features/deployment/hero.svg", alt="Deployment Options")
    // /.innerhero


    section.deploymenytext.container.flexi 
        .deploymenytext__main
            p Apache Ignite&reg; implements the shared-nothing architecture where all cluster nodes are equal and there is&nbsp;no&nbsp;single point of&nbsp;failure or&nbsp;bottleneck. Ignite does NOT have a&nbsp;component such as&nbsp;a&nbsp;master node or&nbsp;name node that is&nbsp;present in&nbsp;most distributed systems.
            
            p Ignite nodes discover each other automatically in&nbsp;your environment, and the cluster can be&nbsp;scaled out or&nbsp;in&nbsp;easily.

            p.pb-4 Apache Ignite can run on&nbsp;bare metal, virtual machines, Docker, Kubernetes, and cloud environments. Technically there are no&nbsp;limitations in&nbsp;regards to&nbsp;deployment environments&nbsp;&mdash; since Ignite nodes can auto-discover each other via the TCP/IP interface, you can launch a&nbsp;cluster anywhere.

            h3.h5.pt-2.pb-2.deploymenytext__title Servers, clients and protocols
            p Ignite defines two types of&nbsp;nodes&nbsp;&mdash; servers and clients. A&nbsp;server node is&nbsp;the base computational and data storage unit. Typically, you start a&nbsp;single server node per machine or&nbsp;container and it&nbsp;will scale vertically by&nbsp;utilizing all of&nbsp;the CPU, RAM, and other resources available unless specified differently. These resources are pooled and become available to&nbsp;Ignite applications once the server node joins the cluster of&nbsp;other server nodes.
            
            p A&nbsp;cluster is&nbsp;a&nbsp;group of&nbsp;server nodes interconnected together in&nbsp;order to&nbsp;provide shared resources like RAM and CPU to&nbsp;your applications.

            p Client nodes (aka. thick clients) are your connection endpoints and gateways from the application layer to&nbsp;the cluster of&nbsp;server nodes. You always embed a&nbsp;client into your application code and execute the required APIs. The clients shield all the complexity of&nbsp;Ignite&rsquo;s distributed nature from application developers who will see the cluster as&nbsp;a&nbsp;single unit. It&rsquo;s as&nbsp;simple as&nbsp;connecting to&nbsp;an&nbsp;RDBMS via a&nbsp;JDBC driver or&nbsp;Spring Data framework.

            p In&nbsp;addition to&nbsp;the thick clients, you can access the cluster with Ignite thin clients, JDBC and ODBC drivers, or&nbsp;the REST API.


        aside.deploymenytext__picwrap.picwrap 
            img.deploymenytext__pic(src="/img/features/deployment/deploy-pic.svg", alt="")


    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                h3.h4.nativebotblock__title
                    img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Discover our quick start guide and build <br>your first application in 5-10 minutes
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/", target="_blank") Quick Start Guide
            article.nativebotblock.nativebotblock--learn
                h3.h4.nativebotblock__title
                    img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want To Learn More?
                p.nativebotblock__text Read Native Persistence article
                a.nativebotblock__link.arrowlink(href="/arch/native-persistence.html") Native Persistence Article




