<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:08:34 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[DOCS-13727] [Server] Distribute the Tools as a software service provided in the cloud</title>
                <link>https://jira.mongodb.org/browse/DOCS-13727</link>
                <project id="10380" key="DOCS">Documentation</project>
                    <description>&lt;h2&gt;&lt;a name=&quot;Description&quot;&gt;&lt;/a&gt;Description&lt;/h2&gt;
&lt;p&gt;Yes - it would be a new component of software to document&lt;/p&gt;

&lt;p&gt;Engineering Description&lt;br/&gt;
&#160;&lt;b&gt;Fundamental Limitation of the Tools&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The Tools are currently distributed as Golang executables in mongo-tools and MTC.&lt;/p&gt;

&lt;p&gt;First of all, it&#8217;s generally difficult to &#8220;deploy&#8221; and test CLI tools in isolation; CLIs intrinsically have to support all platforms across all dependencies.&lt;/p&gt;

&lt;p&gt;In addition, it&#8217;s not very easy to embed the underlying executables into other products, e.g. Compass and Atlas web UI.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Core Concept - Tools as a Service&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The Tools Server is a proposed system, which executes a subset of the Tools&#8217; functionality in the cloud over an HTTP/s service. We could expose &lt;em&gt;all&lt;/em&gt; of the Tools in this fashion, but the most salient use cases are in &lt;em&gt;import/export&lt;/em&gt; and &lt;em&gt;dump/restore&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The endpoints of the prototype might look something like this:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;/import &amp;lt;args&amp;gt; - import file(s) in JSON/CSV to authenticated DB/collection&lt;/li&gt;
	&lt;li&gt;/export &amp;lt;args&amp;gt; - export authenticated DB/collection to JSON/CSV&lt;/li&gt;
	&lt;li&gt;/dump &amp;lt;args&amp;gt; - dump BSON file(s) corresponding to DB/collection in specified file sink&lt;/li&gt;
	&lt;li&gt;/restore &amp;lt;args&amp;gt; - restore given BSON files to authenticated DB/collection&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This design gives rise to the following possible features:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Provide &lt;em&gt;import/export&lt;/em&gt; functionality over web UI and Compass, e.g. &#8220;Upload File&#8221; and &#8220;Save Cluster as {CSV, JSON}&#8221; buttons&lt;/li&gt;
	&lt;li&gt;This would be useful in analytics workflows, where users rely on GUIs but tend to need this functionality&lt;/li&gt;
	&lt;li&gt;Use &lt;em&gt;import&lt;/em&gt; to provide live sync between ADL and any MDB instance&lt;/li&gt;
	&lt;li&gt;Use &lt;em&gt;dump/restore&lt;/em&gt; to provide live backup of any MDB instance to the cloud, i.e. an S3 bucket&#160;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;A possible prototype of the system would be a generic implementation of &lt;em&gt;dump/restore&lt;/em&gt; and &lt;em&gt;import/export&lt;/em&gt; in Realm and/or AWS Lambda.&#160;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Short-Term Benefits&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;**In the past, we&apos;ve considered the following Epics:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/TOOLS-2072&quot; title=&quot;Rationalize command line options across tools&quot; class=&quot;issue-link&quot; data-issue-key=&quot;TOOLS-2072&quot;&gt;TOOLS-2072&lt;/a&gt; - rationalize CLI options and formalize interface&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/TOOLS-2279&quot; title=&quot;Improvements to tools internals&quot; class=&quot;issue-link&quot; data-issue-key=&quot;TOOLS-2279&quot;&gt;&lt;del&gt;TOOLS-2279&lt;/del&gt;&lt;/a&gt; - UI quick wins&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;These give rise to higher-level problems in the Tools and the ecosystem, i.e. &#8220;What would a stable and succinct interface over the Tools look like? How do we implement that?&#8221;&lt;/p&gt;

&lt;p&gt;This problem in particular is solved much more easily by versioning and distributing a HTTP/s-based Tools API and leaving the functionality embeddable to various interfaces. We could trivially support the CLI, i.e. by using the HTTP/s endpoints, for compatibility, if we wanted.&lt;/p&gt;

&lt;p&gt;Fundamentally, decoupling the Tools&#8217; functionality as an API would result in better testing and reproducibility, i.e. using various Cloud services.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Long-Term Benefits&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;If we support a stable implementation of the Tools as a service, we could enjoy the following:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;More features are possible to the users under this architecture&lt;/li&gt;
	&lt;li&gt;GUI button on Compass/web UI to &#8220;Download File as CSV&#8221; (and so on) using &lt;em&gt;export&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;Cloud service to back up an Atlas cluster to ADL using &lt;em&gt;restore&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;Teams and orgs that want to use the Tools in the future have an easier time doing so, since HTTP/s is embeddable into many services&lt;/li&gt;
	&lt;li&gt;Cloud services are anecdotally more easily authenticated, tested and versioned than CLIs, thanks to MDB itself as a platform&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;&lt;a name=&quot;Scopeofchanges&quot;&gt;&lt;/a&gt;Scope of changes&lt;/h2&gt;

&lt;h2&gt;&lt;a name=&quot;ImpacttoOtherDocs&quot;&gt;&lt;/a&gt;Impact to Other Docs&lt;/h2&gt;

&lt;h2&gt;&lt;a name=&quot;MVP%28WorkandDate%29&quot;&gt;&lt;/a&gt;MVP (Work and Date)&lt;/h2&gt;

&lt;h2&gt;&lt;a name=&quot;Resources%28ScopeorDesignDocs%2CInvision%2Cetc.%29&quot;&gt;&lt;/a&gt;Resources (Scope or Design Docs, Invision, etc.)&lt;/h2&gt;
</description>
                <environment></environment>
        <key id="1386997">DOCS-13727</key>
            <summary>[Server] Distribute the Tools as a software service provided in the cloud</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="1" iconUrl="https://jira.mongodb.org/images/icons/priorities/blocker.svg">Blocker - P1</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="2">Won&apos;t Fix</resolution>
                                        <assignee username="andrew.feierabend@mongodb.com">Andrew Feierabend</assignee>
                                    <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 23 Jun 2020 15:42:13 +0000</created>
                <updated>Mon, 30 Oct 2023 19:23:06 +0000</updated>
                            <resolved>Mon, 22 Feb 2021 19:21:00 +0000</resolved>
                                                    <fixVersion>Server_Docs_20231030</fixVersion>
                                    <component>tools</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10320">
                    <name>Documented</name>
                                            <outwardlinks description="documents">
                                        <issuelink>
            <issuekey id="1383069">TOOLS-2624</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_13552" key="com.go2group.jira.plugin.crm:crm_generic_field">
                        <customfieldname>Case</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[[5002K00000mrnzDQAQ]]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 33 weeks, 1 day ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>DOCSP-1769</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>emet.ozar@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            3 years, 33 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>andrew.feierabend@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hxr0i7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hxe0nb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hxqmrj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                </customfields>
    </item>
</channel>
</rss>