How To Build A UI For An Internal Developer Platform (IDP) With Port?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
if I would ask people what is the hottest Topic in the industry some would answer platform engineering heck many would say that that's one of the interesting topics of this year now platform engineering covers many many different topics and it means everything and nothing depending on whom you ask but there is one topic or one team that goes through all those discussions and that's developer portal and there's a good reason for that the complexity of modern software development is increasing and with that we are getting an increased number of tools and apis and processes and platforms and whatso not and that's almost impossible to manage for somebody who is not dedicated to those tools as a result we have Collective Madness and frustration we need some kind of developer portal that will unify all that that will provide a single interface for all the developers to manage their stuff whatever the stuff is I mean that's applications and building and CI many many different things and what unifies them all is that single interface the developer portal that they can use to manage things to manage their processes to manage their tools to manage their stuff in a way that is Unified because the last thing we want is for everybody to go through endless number of tools and formats and whatso not and that is why backstage became so popular backstage is I believe the third most popular project in cncf right now right after kubernetes in open Telemetry and that tells you something not necessarily about the project itself but about the need to have an extensible developer portal that can be tailor-made for what people need so we definitely need a developer portal and that could be backstage or backstage like something now we don't have many alternatives to Backstage so that's probably one of the reasons why it was so widely adopted but not today today I you might expect me to talk about backstage but that's not what I'm going to do I'm going to talk about a tool I fell in love with and we are yet to discover whether that love will end in a marriage or separation divorce [Music] let's start with Basics why do we need developer portal but I'm not going to answer it at least not directly because first I'm going to ask a different question and the question is what is platform engineering now I will not go in details why do we need developer portal simply because I already answered that in detail in that video over there the gist of it is that we have experts in certain areas that provide services to everybody else like you know kubernetes right you're an expert in kubernetes excellent provide the service that will enable people to create and manage kubernetes clusters and employ applications in those clusters without going crazy without spending the same amount of time learning it as you did are you a DBA or database administrator great don't wait for others to Open jira tickets or that you can do things for them instead create a service so that everybody can easily create production ready databases and manage those databases and schemas and whatso not use your expertise to help others to self-manage stuff instead of waiting for them to ask you hey can you create a database for me don't do that that does not scale no one can know everything so we all need to be specialized but being specialized does not mean that we need to be blockers so that others wait until we do things for them being specialized means being an expert that can provide services that others can consume it's about codifying our experience by providing services that are tailor-made for what company needs while still providing Simplicity to everybody now if you combine all those services from different experts into a unified API we get something that somebody can use everybody can use however not everybody wants to use apis not everybody wants to send serial requests or something like that to create or manage things and that's why we need potentially maybe user interfaces web uis or developer portals I advocate for using cross brain for building that API I advocate for using githubs so that the desired state is in git but we do need a web UI on top of all that and that is the focus of this video building that interface on top of an API and that's where backstage comes in handy backstage is absolutely awesome but I already said it I will not talk about backstage I will talk about something else today we'll talk about a product a service called port a potential replacement for backstage okay I need to read this because this is the description from Port itself Port is a developer platform made to make life easier for developers and devops in an organization by creating a single platform that texts as a single source of Truth for all the infrastructure assets and operations existing in the organization's Tech stack those are some big words said by many before port so I want to see what makes Port special is there anything special to begin with now we'll get to what is special a bit later for now what matters is that Port specializes in two things I mean it specializes in more than two things but two things are from my perspective really important and crucial to understanding what it does and how we can benefit from it to begin with it enables us to catalog all the applications Services infrastructure everything that we have running in our systems on top of that it provides a single place that enables developers everybody else to interact with all those resources one way or another to create applications to delete applications to watch applications to log applications to do everything and not only for applications but potentially for everything Azure Google Cloud AWS infrastructure Services running as Google Cloud Runner kubernetes class it does not matter what that something is because the architecture of Port allows us to plug almost anything into the system so it is very similar at least in its goals to Backstage but the way how it accomplishes that is very very very different now let's see it in action how about that oh no wait there is one thing I forgot to explain Port relies on three major components or entities in itself we have blueprints entities and actions blueprints are like a data model data model that allows us to Define what something is entities are like instances of that data model that allows us to track all the entities that are based on the data model and we have actions well the word says it all right actions allow us to Define what should be executed as a result of some action I said too many times action right now this moment you might be confused like blueprints entity sections at least I was the first time I saw a port so let's see it in action that should simplify the experience I already signed up with ports and I did the initial setup during that setup I was presented with a couple of no more than a couple of Integrations and I chose to integrate with GitHub and with the cluster cluster is very ephemeral so far you'll see later that I will need to teleport what cluster really means but that's about it that's all I did in advance that's the boring part you can do it yourself it's a couple of clicks what comes next is what's really interesting so since I imported or integrated with the cluster set of blueprints I got the cluster blueprint I got node I got namespace and so on and so forth now you might be wondering what is a blueprint well blueprint is a data model it tells Port what is the data associated with certain entities or types of entities so far data does not do anything it's not data that is poured into a port it is just data model right and that's the power of part it allows us to Define data model in any way we want to Define whatever we really have instead of Port trying to figure out models in advance and saying hey you must your application must be like this and your cluster must be like this now we have full freedom to Define data models ourselves and QuickStart only gives us well quick start a base on top of which we have to develop something but since I did start with a quick start I got as already mentioned integration out of the box with GitHub and what that means is that I got blueprints data models and entities the real information from GitHub was already imported into Port so I see Services those are effectively git repositories where my applications are defined I got pull requests all the pull requests across the whole organization workflows and issues all from GitHub right this is still nothing custom right or kind of custom but I'm yet to create my own blueprints later a couple of minutes soon I promise now every person in your organization will see those pages but every person or a team should be able to customize the experience and we can do that through filters through filters we can say I can say for example hey I want to see only those services that contain the word silly somewhere in their title and those that's all I care about right I don't care about services so everybody else in my company I want this page to show me only the stuff that I care about and we accomplish that through two different means first is Filters which I just did and I can save that page so the next time I come to services I see only those that I care about and I can also choose which columns I want to see because I might not care about all the columns that somebody else cares about I want to see only the information that I deem useful over here and the same thing applies to pull requests or anything else import because Port is really unopinionated what you see here is what I want to see and the blueprints and the entities which is resources effectively are those that I care about now we can work through web UI it's what I was doing so far or we can communicate directly with ports API now there is no real CLI to do that so that's the first negative point for Port I don't like when I don't get proper CLI but there is an API and if you want to code it directly or use C URL or something like that that certainly doable so great API no CLI plus minus what can you do examples by the way are all written in Python which again depends on whether python is your choice or not no let's see what happens if I go to the cluster section right just as with GitHub I got couple of blueprints related to the cluster including cluster itself but this time there is no data Port did not know how to get data from my clusters because unlike GitHub that can be anything that can be a kubernetes cluster running here or there or some other type of clusters or maybe not clusters at all right so I need to ingest data I need to tell Port how to fetch data from my clusters and use it somehow in relation to the blueprints to the data model that is already defined and as I said before the interesting part comes later when I start defining my own data model so I'm going to choose kubernetes as the source of the formation of my cluster and then I'm redirected to the documentation page I don't like that there should be a pop-up within the UI because if I'm in UI I probably don't want to jump out of the UI nevertheless us documentation page explains how to ingest data into cluster blueprints from a kubernetes cluster and as you can probably guess that's by installing a Helm chart inside my cluster and that help chart will have all the information that Port needs to understand how my cluster is related to some blueprints in Port itself now I cannot just install Helm chart as is a Helm install and that's it right I need to define a config file a sort of values file that will teleport how to relate stuff that I have in my cluster with Port blueprints now right now I'm still not doing anything custom I'm using the definition from the quick start or not from the quick start from Port documentation later on I will show you my own interpretation on that but right now let's go and see what port recommends us to do now the config file copycates yaml contain change resources the First Resource is the kind namespace what that means is Hey whenever you find some namespace that's somehow going to go to Port as information as entities related to a blueprint now the selector in this case says yes but only namespaces that contain Cube system in the name cool so that's only one namespace and then you should map that such a name space with a blueprint cluster and that should be the blueprint cluster called dot or dot so here you can see the simplest relation between an entity some real information some real resource and a blueprint and then we have another namespace right kind namespaces and this time it says hey this time I want all the namespaces except those that contain the name Cube and they want a map that to the blueprint namespaces there are some parameters editors that I'm going to associate so this part of this information from the namespace itself in the kubernetes cluster goes to is related to this data in the blueprint and on top of all that whenever somebody stores an entity or discovers an entity related to a namespace that entity from this cluster should be related to this cluster called Dot and then I do the same thing with nodes it all follows the same pattern hey this is a real resource in this case kubernetes resource it maps to this blueprint those this is the data this is the information those are the parameters that you should inject or ingest and there is zero or one or more relations with some other blueprints right so because I want to create a three of relations between entities not only information itself and then there are pods which follow the same patterns or no need to explain it now I have a complaint about this config demo I mean it works fine it's great but this should have been shared this there should be a port operator in my cluster installed separately of the definitions so I should have a Helm chart to install Port operator and then I should be adding CR for every mapping that I want to include in my clustering related to Port that's a nitpicking here but you know I'm a freak about doing things kubernetes native way instead of any other way and then shoving it into a container but nevertheless it works as yes but now you might be asking hey what are the properties how do you know what is a blueprint in Port because without knowing what is a blueprint import you do not know how to relate the information from something real in this case kubernetes clustering that blueprint well there are two answers to that first of all most likely I created the blueprint but if I didn't I can go back to Port UI and see the blueprint itself and then that's a simple Json right it's just a Json that has among other things some properties and those are the properties that should much match to some real entities so just check the Json right would it be great if it's yamu yes I don't like Jason myself but hey again I'm nitpicking here it's one format against the other so it works fine and now I can install I can apply that jump chart to my cluster and hopefully everything will automatically start working so the first thing I need to do is add the chart trip to my local list of repos and then I need to Define two environment variables client ID and client secret you can get that information from Port UI itself and that's about it now I'm ready to install the chart so help me upgrade install you know the drill right it's just Helm just install it let's see what happens if I go back to port to the entities specifically if I go and see let's say clusters first right did they get the cluster import and yes I did my DOT cluster is over there but that was easy because that's only one I could have added it manually if I go inside that cluster I can see the information about the cluster itself there is not much and I can see upstream and downstream relations in this case they're all Downstream so there's a node or nodes there are namespaces and there are pod and that can continue navigating right from one group of entities uh to another group of entities Upstream Downstream as long as there are relations between those entities I can go from one to another and I can see all the details I can see also runs which I have none because that's reserved for a separate video but I'll get to that later the resulted logs which is not really logs from those entities in this case from kubernetes cluster but how did logs of Port itself I could bring logs and events and other type of information into Port itself that would just be in yet another blueprint and then how to ingest data from clusters into that blueprint as entities but I did not do that and then there are scorecards scorecards are a way how to put some value into uh entities and say hey this sentence is a good entity for this and this entity is bad entity for this and that I will explore that later maybe we'll see in any case I can navigate I can now see everything related to my clusters I mean not everything but everything that I told Port that I want and I did not do much yet much is yet to come now Port is not an opinionated platform it's not an opinionated system that thinks that it knows what you need it's quite the opposite it's unopinated but you saw so far is mostly through Wizards and quick starts but here comes the really unopinionated part meaning I am going to Define myself my own Blueprints and my own entities and my own everything to be exactly exactly exactly what I need and that's the really awesome part so let's get cracking let's see how I can define something and what is that something well I'm going to Define environments right I have in my system environments like staging production and so on and so forth and I will start with certain type of application let's say back-end application right so I want to define import what it means for me to have a backend application in a way that is completely unrelated or not directly related with the implementation of those backend applications right I do not want developers in my company to see all the details of kubernetes the things that they don't care about but Focus only what matters to everybody working on backend applications right so razor sharp focus on what matters and not on the underlying implementation which in this case is going to be kubernetes but it could be anything else literally anything else now there are two ways how to add a new blueprint to Port we can choose from a template that's good as a starting point you do not want to do that outside of hey I want to learn how it works you want to create your own custom Blueprints and that's exactly what I'm going to do right now now I could write the blueprint Json it's over Json in case of Port directly in the web UI I will not do that because I already prepared the file for you guys and girls so let's take a look at Jason that are already prepared to begin with it will be Json for environments so let's output blueprints environments Json to begin with we have the identifier which is uniquely identifying this blueprint it must be unique and in my case it's called environment we have description title icon and so on and so forth some metadata that you can put whatever you want over there doesn't really matter I mean it does matter it should be descriptive but it's not critical right the properties in schema is empty meaning that I do not need to know any data about the environment except the relation to the clustering relation Downstream relations to backend applications in this case so it's empty you will see properties in more detail in the next one mirror properties calculating properties check the docs I'm not going to go through it right now and there is relations now this is important right one relation is called cluster and it's targeting a blueprint cluster right so whenever an entity called environment is created I want to have a clear relation with the cluster where that environment is running assuming that there is a cluster my case there is a cluster it's kubernetes so I'm going to copy that Json I'm going to go back to Port UI I'm going to close whatever I was doing there before and then create a new custom blueprint it comes with the default Json I'm going to delete that and paste the Json we just explored and click the save button now before I click the save button I should mention that the editor in the web UI is absolutely awesome it detects all the issues or most of the issues so it will not allow me to save this Json this blueprint unless it is most likely correct so let's put that to the test let's set it I will change the name of the relation from cluster to Cluster X and then it figured out that there is something wrong there is no such relation I will not let you proceed you need to point you need to type the correct relation over there so let me correct that and click the save button and then it works so the editor is absolutely awesome it works great it will give you the information about most of the potential errors and now the environment is available here in on the screen and there is a clear relation between that entity or all the entities and the clusters right now that was a boring part let's see more interesting part more customizable part that I have today for you and that's backend up so let's take a look at the backend up Json it has identifier backend up some other metadata not important and it has properties this time I do have properties I have all the information listed here that should be important for a hypothetical developer who works with backend applications there is a URL that should point to the git repository it contains the source code of this application there is on-call field or parameter that should tell people who is responsible who is don't call for that application if something goes wrong then we have language which can be go JavaScript python whatever you put over there whatever the language is your company works in the list of all available issues related to this application available replicas that will be fetched at front time then we have labels and containers and whether the application is healthy right most of this information will be fetched from my cluster sometimes it should be fetched from other entities like right now I did not create relation to issues but if I did I would fetch the information about the number of issues as the calculated information that would gather because some all the issues related to this application so I can do a lot of calculation and relations between different entities I didn't do that just yet or right now because my only relation here is with the environment so let me copy the Json go back to Port UI AI creating new custom blueprint delete whatever is there by default and paste my own Json over here and once I save it you can see that I have yet another blueprint that says backend up and that backend up is related with environments and environments are related to clusters and so on and so forth now as I mentioned before blueprints are just data models there is no data yet Port calls that data entities so I need to instruct my kubernetes cluster how to fetch the data required for those blueprints to become alive so let's do that I have a modified config yaml over here that is extended version of the one we saw before now the First Resource over there is the same as before skipping it and the next one is actually important the next one is the one that defines environments so what did I do I want to take all kubernetes namespaces and then filter them with only the those that contain environment in the name I have some mappings I will go through mappings later the backend application because that's the more interesting case and active relations all the namespaces that are environments in this cluster belong to the dot cluster right this is easy because all the namespaces in this cluster are from that cluster right some other relations would be slightly more complicated but not very complicated though now the next one is the really interesting one I'm saying Hey I want to take all kubernetes deployments and then from all those deployments I do not really want all I want to filter them and I want only those that have the label type set to backend so only deployments with specific label should be considered back in application because I might have fronted applications that are also kubernetes deployments but they are not this type of application now inside of mappings I have properties and that's the interesting part for example available replicas filled your property in the port blueprint should be associated with specific field specific value in kubernetes deployment and that value is from the status available replicas in kubernetes deployments at runtime and then labels are equivalent to metadata labels and this is how you fetch containers and this is how you find out whether it is healthy and URL comes from specific labels that's pointing to GitHub repository language also comes from a label and who is on call comes from an annotation and the rest of this config is the same as before so let me do Helm upgrade installed you know the same command as before I want to upgrade this chart with additional with the modified version of the configuration file again I would love if this would be custom resources why didn't you do that Port but okay it's fine this is a general purpose developer platform not meant to be specific to kubernetes so I can forgive you for that but not for longer now what happens if I go back to the port UI I can see backend apps still empty and environment is still empty what's going on well what's going on is that none of my namespaces match that pattern and I did not deploy a single deployment that is of that has a label type set to backend so let me do just that let me show you the definition of a couple of namespaces there you go and those namespaces have names that match those that I expect to see in Port Associated to environments and by that I mean environment does something so let me apply that one and then go fast fast fast back to port and you can see that only one environment is there staging but that's probably because I was too hasty I can refresh the screen and then both environments are there I have environment staging and production ingested from my kubernetes cluster using the patterns the blueprints that I created to match what I need and not what somebody else thinks I might need and I can go to any of those environments and then I see all the details not much in case of environments much more will be available in case of backend applications and I can see all the upstream and downstream relations in this case there is only cluster that's the Upstream relation there are no back-end applications yet so let's see whether I can deploy some applications to that cluster and see them as well so let's take a look at a deployment yaml file that is part of my application right I still have Ingress in service and what's not in that application but that's not important that's extremely actually important for application to run correctly but not necessarily does not necessarily contain information important for people uh for developers working on back-end applications so remember port is all about showing cataloging all the not only cataloging there are other things but in this case creating a catalog with information important to somebody and not necessarily all the low level details that matter only to kubernetes experts in this case now this deployment has an annotation and a couple of labels they provide information that will be ingested into port and available over there as you will see soon some other information will be retrieved from statuses and whatso not of the deployment itself and the the rest of the deployment is just a typical deployment as you already have right now for at least one probably many other of your applications so let me deploy this application with Cube cattle namespace etc etc etc you know the drill my application is now running or will soon build running in that kubernetes cluster there is service deployment horizontal put out the scalar and what they are seeing is that does not matter really you will see the information you should see you care about in Port nothing kubernetes so let me go back the port and then if I go to backend applications in pay attention that left hand menu is dynamic as well it contains all the blueprints so whichever blueprints you defined in Port is what will appear in the left hand menu which is not necessarily that great because you can easily reach 100 blueprints or hundreds of blueprints and then this menu would be too big I would like to have an option to customize what I see in that left hand menu to put only the information that is important probably the root information the root blueprints not necessarily children blueprints but nevertheless that's uh yeah I'll get to pros and cons later anyways let's see whether backend applications are now there actually one application and indeed my application is now visible in Port and I can go inside and I can see all the properties to begin with we have the identifier boring we have the team team is empty because I did not instruct port how to ingest information about the theme but you can always change some information manually directly from this UI there is the URL to GitHub repo with the source code of that application it is written in go it has two replicas currently running there is information about containers uh the environment which is production and if I click on that link I will go to the entity of that environment production environment and then I will see the details about the environment itself which happens to have Upstream entity cluster and downstream entity backend apps there is title when it was last updated who is on call the number of GitHub issues which I'm faking right now because I was too lazy to connect it with actual GitHub issues I will do that maybe in the next video the labels and just as importantly whether it is healthy what is the status of my application theoretically and in practice I should see all the information that matters to me as the developer of that application right here independently of the low level details of the implementation of How It's really really really running and down there like in any entity we have Downstream and Upstream relations the entities related to this one and if you're a visual person instead of looking at a table like view if you can click on the graph and then you see visual representation of all the relations between different entities that depend or are related to the one that I'm looking at right now now the last thing or not the next thing instead of the last that I want to see is whether the information is updated correctly at runtime so let me do some modification to my application let me change horizontal scale it and modify it to have the minimum number of replicas set to 4 instead of two so let me apply the change Cube cattle etc etc etc and my HPA was changed modified now let me go back to port and see whether Port updated the information as well that should correspond to the available replicas if I remember filter property now this is disappointing it's still still seeing two replicas what is disappointing all if you don't know that it takes a couple of moments until HPA discovers and upgrades or not upgrades but scales up my application so my application is not yet scaled to four replicas let me double check that let me go back to my cluster and take a look at how many pods do I have right now now there are four while I was talking it's scaled up so let me go back to Port refresh the screen and there we go there's four replicas in Port itself right so it fetched the information and updated the entity that it is managing by the way did I say that you can manually change information as well especially the information that is not available by ingesting data from somewhere like I can change the theme to build BLT and that's about it right so you can ingest the data or you can manually change the data don't change the data manually better ingest it always and keep port read-only and that would be a feature requests for poor people hey can I say that everything is read only only that would be nice as I said before there are runs which have a comment in a couple of moments and then there is audit log as well again in this case it's not logs of the application itself that's the logs of Port itself actually logs or audit logs related to this specific entity now let's talk about other features like actions and scorecards and maybe discuss the pricing model and a few other things no actions are extremely important in Port maybe even more important than it looks at the beginning when you start exploring it actions allow you to trigger well some actions so let's say that I want to create a new application and I do not want to Define my Helm chart or do whatever needs to be done push it to get do this or that I probably have a bunch of actions that I should perform when starting or creating a new application I can automate all that through let's say GitHub actions and then import Define an action that will trigger that GitHub action and also provide me with the web UI that I can fill in some fields and say hey I would like this type of application I have this information that information click and then Port triggers automation what's a GitHub action so junkies or whatever you're using that will do whatever needs to be done and that will result in my application new application running in a cluster and you already know you already saw that once it starts running in a cluster then portfolio in just that data and show it back to the web UI so actions are extremely important but I do not have time to go through them today and not only that I don't have time but actions will be crucial for a huge massive video probably the biggest and most important video at the time about to release finishing and you will find about it soon for now explore actions on your own until wait for a couple of weeks maybe three weeks or something like that and then you will see them in action it will be part of uh something very very special then we have scorecards scorecards are just giving us information of whether we need something good or not it's in my opinion it's probably the least appealing feature of Port it's nice nevertheless so try it out I will not go through it right now what time will go through is the pricing model uh pricing is always important right when deciding whether we should use something or not now let me start by saying that Port is not open source right so if you want something that is purely open source then go for backstage now I will argue later that Port might be a better choice than backstage but there is a negative thing or downside for some that it is not open source but not being open source is normal when it's a software as a service or SAS type of solution and portisas most SAS Solutions are not open source or sometimes they're based on open source but not open source themselves anyways it's a SAS solution so you do not need to install anything you know I mean you need to install kubernetes met this agent but outside of that it's such solution and it's free most of the features that are available are free so there is no real reason not to try it out at least everything you saw today is in the free version I did not show any Enterprise version there is Enterprise version but almost everything you need is free I'm not sure how we'll Port their money if everything is free but it's good for you right not everything is free there are some Enterprise features now let's talk about pros and cons what are the good things what are the bad things about Ford and whether you should use it and maybe I will touch on how it competes with backstage now let me start by saying that it is for any internal developer platform that you might be building having a web UI or UI of some sorts on top of it it's crucial you will not be able to have unless everybody in your company are terminal freaks as I am you cannot not have a web UI even if actually everybody loves terminal you need web UI for observability reasons for sure and that's what they focused most today and then you might choose to have the web UI for performing certain actions as well which is debatable and will be debated in one of the upcoming videos anyways you need a web UI or any type of UI if you want to have a developer platform now having a UI is certainly not the only thing you need so it's not that you do you use something like backstage report and that's all you need absolutely not but it is a crucial piece that sits on top of an IDP now I will not go into details of everything you need for an IDP because you can watch that video I already explained all that and another one is coming very very soon but in a nutshell the internal developer platforms at least for medium or large companies needs to be flexible and it needs to allow you to Define what you have so that the end result matches your system and that means that it cannot be highly opinionated and that's what goes well with Port Port allows you to Define what you want to have or what you already have and that's the top part and then at the bottom I would recommend creating custom resource definitions that match that something or actually do the other way around create custom resource definitions that match something in your management kubernetes cluster control plane cluster and then put port on top to interest the data and show it on the screen nevertheless the bottom part is not the subject of today's video so let's talk about Port let's see what are the pros and cons of using port and whether it is a good choice now I will start with bad things negative things and but before I tell you what are the negative things let me tell tell you that I love Port I think it's a great service I think that it's absolutely amazing it has some bad things but they're not that much of bad things but more room for improvement right I have nothing terribly wrong to say about Port I have certain things that I want to say the bad things but that's more like hey poor guys this should be on your roadmap you should improve this or you should add that right so when I say cons I mean room for improvement to begin with quick start is not good right I mean it's easy to follow it's quick right quick start but it does not really create anything tangible right you get some blueprints you get some entities but since there is nothing running through the quick start it's very hard to understand the benefit of using Port so improve your quick start give me something tangible ingested into port and then it would be very easy for any newcomer to see the value right away like this quickly now I like that Port allows me to Define everything I have but some things should be discoverable without me necessarily saying what they are let me give you an example I need to Define what is a backend application because Port cannot know in advance what it is in my case that was only a subset of deployments with some special labels special annotations without ingesting all the data but ingesting some and so on and so forth so backend application in my case or in the case of the demo had to be custom but Port could ingest uh if it knows that I'm using a deployment or part of deployments for that information it could ingest replica sets and pods automatically there should be no need for me to teleport what are the child or low level resources but only focus on High level or root resources that are important so an opinionated crate but some information could be available out to the Box let me skip actually kubernetes and say hey if I'm using AWS Port could probably ingest the data automatically and then let me pick and choose what I want to use and how I want to customize it next there is no way to customize the left hand menu which is kind of silly because you will quickly if you're serious reach hundreds of blueprints and then your left hand menu will have hundreds of items over there not good because they're not all equally important and they're not all sitting on the same level so please please please support allow me to customize what I see in the left-hand menu and make it per person uh so that I see something different than somebody else in my organization now this is probably the biggest downside or no missing thing there is no real homepage there is uh when you plug in into Port you get the list of the graph for blueprints that's great for Designing but I would like some dashboardy type of page to see is the home page and I would like I would have to make it my own so it needs to be customizable so what I'm really saying is that I want a home page to be customizable where I can put and say Hey I want a summary of those entities and those entities I want this I want that some kind of a place where I can put the most important information all at once and finally the last negative thing is that Port is not opinionated uh what I'm thinking by that is that it would be nice if it would have more predefined type of templates I do not want it to be opinionated but I wanted to know when I say hey this is a kubernetes cluster this is AWS account or something like that to say oh you most likely want this how about I give you this as a starting point and then you build on top of it instead of starting literally from scratch now let's go to the good things to the pros uh and now this is going to be controversial it is unopinionated and I already said that that's a bad thing actually it's a great thing for many of us it is better that it is unopinionated than opinionated I would like to have a mixture of both but if I had to choose one over the other I want to be able to Define myself what matters to me instead of some third-party vendor saying hey this is how you run your applications that's not the case every company has different systems so being an opinionated and allowing me to fine tune a specific exactly what matters to me is a killer it's a great feature next it is very user friendly right it is more user friendly than backstage it has nicer UI it is easier to add and remove things I do not have to write code in JavaScript I do not need to compile I do not need to redeploy stuff so it is user friendly both for the end users and for the designers for people who are defining in case of Port Blueprints and entities that since I already mentioned JavaScript let me state that there is no need to write code you can Define absolutely everything in JS Json now you do need to write code but that code is outside of Port right so you will have to write code of your pipelines that will be triggered by actions from Port but Port itself is declarative Json I would like yaml but hey uh anyways no need to write code import the reason it to write code outside port and finally it solves two of the major hurdles or the needs I need for such a web UI I need to catalog things I need to see everything happening in the system or only the things that matter to me so I have a catalog and I have actions actions allow me even though I didn't show them in this video allow me to trigger some processes that will do something like hey create a new application delete the application create a new cluster delete the cluster so actions and catalog two of the most important features and they are there now let me say that I was looking for something like this for a while now and I feel the port is the thing uh the only real competition that I know of would be backstage and backstage is great in many different aspects it is a very popular project it has a lot of contributions it is open source and so on and so forth but it's also painful not necessarily for end users but for those modifying and creating the final experience uh backstage can be painful and it is painful I believe unless you're a typescript ninja and uh Port gave me that Simplicity that I was looking for so what I'm trying to say is that I love the idea of Backstage I do not necessarily love backstage itself at least not for all types of users if you're dedicated on having a full team developing your uh developer experience and IDP you know 10 people then backstage is great because you can have one or two people dead dedicated to Backstage but most companies do not have their capacity or do not want to spend that amount of time on it and then Port comes in very very handy it allows me to do things infinitely faster than I would do in backstage so that's about it try it out I'm sure you will like it and let me know in the comments what are you using do you like the idea of Port are you already using backstage to use something else let me know in the comments see you next time cheers foreign
Info
Channel: DevOps Toolkit
Views: 12,060
Rating: undefined out of 5
Keywords: devops, devops toolkit, review, tutorial, viktor farcic, k8s, kubernetes, port, idp, internal developer platform, internal developer portal, developer portal, developer platform, platform, portal
Id: ro-h7tsp0qI
Channel Id: undefined
Length: 49min 15sec (2955 seconds)
Published: Mon Apr 24 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.