Both these services seem to do the similar things, when would you use each one.
AWS AppConfig helps you applying configuration changes to running applications.
Use AWS AppConfig, a capability of AWS Systems Manager, to create, manage, and quickly deploy application configurations. AppConfig supports controlled deployments to applications of any size and includes built-in validation checks and monitoring. You can use AppConfig with applications hosted on EC2 instances, AWS Lambda, containers, mobile applications, or IoT devices.
AWS CodeDeploy helps you rolling out new versions of applications.
AWS CodeDeploy is a fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers. AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during application deployment, and handles the complexity of updating your applications.
CodeDeploy is actually the tool you use for deploying your code, it supports deployments to EC2 hosts (including on-premise), Lambda and ECS. It takes a archive and deploys this to a resource based on specific conditions (for example a EC2 based deployment you can specify a tag name or autoscaling group to deploy to).
CodeDeploy also integrates with CodePipeline which enables you to build full deployment pipelines for your applications, including building, testing and deploying the application.
App Config is used to deploy configuration settings for your application.
AWS AppConfig enables customers to quickly rollout application configuration changes, independent of code, across any size application hosted on Amazon Elastic Compute Cloud (EC2) instances, containers, and serverless applications and functions.
Using either a parameter store value or an SSM document you would use AppConfig to perform rolling out of the feature within your app (supporting A/B style testing, proportional rollouts). This enables you to test new features in your application safely without using an all or nothing approach.
In Summary, CodeDeploy will be used for deploying your code base, whereas AppConfig will be for rolling out of the configuration values that your application uses.
Just to complement @DenisTraub and @ChrisWilliams answers.
One big difference between the two is that
CodeDeploy does not require you to modify your application. It can deploy anything without changing a single line of code of your application.
However, to use
AppConfig, you must modify your application. This is because your application must be pooling for any configuration changes that are stored/managed by the AppConfig, and respond to these changes.