Emulating your server nodes locally
Metatype is a platform which allows developers to solely focus on functional aspect of their applications by powering them with rich declarative API development tools to program and deploy in a cloud first environment. One component of Metatype is the Typegate, a serverless GraphQL/REST gateway for processing queries. This post is about how we in metatype made a dev friendly access to a typegate instance namely Embedded Typegate.
Introducing the Embedded Typegate
The embedded typegate is a feature that comes with the Meta CLI which provides the option of spinning a typegate instance from the CLI with minimum configurations and installations needed from the developer. All that is required to access the Embedded Typegate is to install Meta CLI. The spawned typegate instance behaves similarly to cloud-deployed typegates.
The motive
There are more than a couple of reasons why a developer would be tempted to use an emedded typegate. While developers can start a typegate instance using docker compose, the developer needs to install docker as a dependency to run the typegate container. Even though docker is familiar among many developers, it can sometimes be tricky and unbeknownst to some developers. We at metatype highly value the developer experience and one reason for adding the embedded typegate feature to the Meta CLI is for users to have a smooth experience with our system by providing a docker compose free experience. This feature provides a great utility for developers to author and test typegraphs in their local machine before deploying them to production level typegate instances on the cloud. Additionally, developers need not concern themselves with deployment configurations which are needed only during deployment. The only need to focus their energy and time in developing the right application and easily test them on embedded typegate running from the terminal. To add more to what is said, as the typegate engine keeps evolving, users will be abstracted away from the different configurations which might be added on the future. The Meta CLI will abstract much of what's not needed in a dev environment. Thus, leaving less headaches to developers on new changes. Ultimately, The embedded typegate is designed to be a good dev environment friendly tool which faciliates development time.
Quick First hand example
Install the v0.3.x series
Either of the two Typegraph SDKs are needed to author typegraphs. For this example, the node SDK will be used.
First, make sure the Meta CLI is installed.
curl -fsSL https://raw.githubusercontent.com/metatypedev/metatype/main/installer.sh | bash
Next, create a new node project using this command.
meta new --template node
The above command will create a sample typegraph which you can use to test the embedded typegate.
Now, you need to install the typegraph SDK by running the command down below. The previous command generates a package.json
with the SDK specified as a dependency.
npm install
Before deploying the typegraph to the embedded typegate, Run the following commands below.
meta dev
Now that there is running instance of a typegate, you can deploy the example typegraph. From another terminal, run the command below.
meta deploy -f api/example.ts --allow-dirty --create-migration --target dev --gate http://localhost:7890
The typegate runs on port 7890 by default. If you access http://localhost:7890/example on your browser, you can see an GraphQL interface to interact with the deployed typegraph. You can test the example typegraph using the following graphql query below.
query {
multilpy(first: 3, second: 5)
}
Upgrade your Metatype development environment
To Upgrade the Meta CLI to the latest version, you can run the following command below.
meta upgrade
To upgrade the Typescript SDK of the typegraph package, you can use one of the following commands:
- Node
npm update @typegraph/sdk
- Deno
deno cache --reload "npm:@typegraph/sdk"
Learn more about Metatype
Wanna dive deep into the basics of Metaype? check our interactive tutorial revolving around the core features of the system.