extend ../_components/base.pug

block pagetitle
    | 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="/public/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="/public/img/features/deployment/deploy-pic.svg", alt="")


    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                h3.h4.nativebotblock__title
                    img(src="/public/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="/public/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




