-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC 1: Faster Development Iterations (aka "CDK Watch") #335
Conversation
77ed849
to
f349f90
Compare
f349f90
to
dc74db4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's make sure we are aligned on the scope and UX of the feature. Happy to spend some time in a meeting if you need any clarifications.
2cd68e1
to
c657427
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! My 2 cents.
text/0001-cdk-update.md
Outdated
```typescript | ||
const myDevelopmentStack = new ApplicationStack(app, "StackNameForDev", { | ||
... | ||
interactiveUpdate: true, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whether or not we want to make this change, I think the name interactiveUpdate
doesn't represent the functionality in this RFC very well.
Maybe something like allowsShortCircuitDeployment
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's wordsmith the flag as a last detail, but I think there's room for improvement once we agree on the command name.
text/0001-cdk-update.md
Outdated
of your stacks: | ||
|
||
``` | ||
$ cdk update ApplicationStack |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't like the fact that you have to specify the Stack name on the command line, and mark it as interactiveUpdate: true
. Feels like irritating double-booking to me; why do I have to tell you twice that I want to update this stack with cdk update
?
I would either have the property on Stack
, or specifying the names through CLI arguments. Not both.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The stack is specified because it's possible to have multiple stacks and only want to update one of them, or to watch one, etc. This, and it matches the usage of stacks elsewhere in the CDK cli. I don't like specifying the stacks either, but it is necessary if you have "stages" of stacks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then there's no reason for having the interactiveUpdate
property at all, and I would remove it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is, though! Using an at-work example, for a single application that deploys many stacks, only a very small subset of those stacks should be allowed to be updated using this mechanism, and the others need to be denied by policy somewhere. One way that can be done is to explicitly identify which stacks in an app are suitable for it, another is to assume that the user is going to "know" the ones that are permitted in practice. How, otherwise, would a "production" stack prevent a rapid update, if your app consists of multiple stacks, each corresponding to a deployment stage?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm wondering why we are concerned with which ones are permitted, when we are targeting local developer accounts?
My reasoning for having it as a separate command (I'm not married to the In your example, I don't like the complexity that I also don't see the value of
I think giving customers the |
Still open: naming and command UX
c657427
to
8f0d98c
Compare
- rename the command to `cdk deploy --accelerated` - identify the options for selecting deployable stacks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Another review iteration
The RFC needs to dive deeper into the architecture and design (totally fine to do that as we implement/prototype).
For example, I expected to find some information on how changes are identified and associated with a specific update type and what it means to add new resource types.
- added "help" section for CLI help - clarified that other things than assets are in scope - put down an outline of how the extension model might work
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are still quite a lot of unresolved conversations. Please make sure to either address them or add a respond and resolve all conversations before merging.
Co-authored-by: Elad Ben-Israel <benisrae@amazon.com>
- re-ordered the two flags to make `--watch` the primary - re-ordered the usage to center `--watch` - made interactive use optional, default to non-interactive - move step functions workflows into the primary implementation - remove references to the "toolkit"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
@eladb do you have any more comments?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lgtm
By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache-2.0 license