diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 455d4aad..bf8e5c34 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,15 +1,25 @@
 name: Build and Deploy to EC2
 
 on:
+  push:
+    branches: [ "production", "feat/194-deployment-automation" ] ## 나중에 production으로 변경하기
   pull_request:
     branches: [ "production" ]
 
+env:
+  AWS_REGION: ap-northeast-2
+  AWS_S3_BUCKET: gitget-deploy-bucket
+  AWS_CODE_DEPLOY_APPLICATION: GitGet-Application-CD
+  AWS_CODE_DEPLOY_GROUP: GitGet-Deployment-Group
+
 jobs:
-  build-docker-image:
+  deploy:
     runs-on: ubuntu-latest
+    permissions:
+      contents: read
+      packages: write
     steps:
-      - name: Checkout
-        uses: actions/checkout@v4
+      - uses: actions/checkout@v4
 
       - name: Set up JDK 17
         uses: actions/setup-java@v4
@@ -24,7 +34,6 @@ jobs:
           touch ./application.yml
           touch ./application-common.yml
           touch ./application-prod.yml
-          
           echo "${{ secrets.APPLICATION }}" > ./application.yml
           echo "${{ secrets.COMMON }}" > ./application-common.yml
           echo "${{ secrets.PROD }}" > ./application-prod.yml
@@ -42,37 +51,23 @@ jobs:
         run: chmod +x ./gradlew
         shell: bash
 
-      - name: Build with Gradle
-        run: ./gradlew clean build
+      - name: Build and Test
+        run: ./gradlew build test
 
-      - name: docker login
-        uses: docker /login-action@v2
-        with:
-          username: ${{ secrets.DOCKERHUB_USERNAME }}
-          password: ${{ secrets.DOCKERHUB_PASSWORD }}
+      - name: Make zip file
+        run: zip -r ./$GITHUB_SHA.zip .
+        shell: bash
 
-      - name: docker image build
-        run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/gitget-application .
+      - name: AWS credential 설정
+        uses: aws-actions/configure-aws-credentials@v1
+        with:
+          aws-region: ${{ env.AWS_REGION }}
+          aws-access-key-id: ${{ secrets.CICD_ACCESS_KEY }}
+          aws-secret-access-key: ${{ secrets.CICD_SECRET_KEY }}
 
-      - name: dockerhub push
-        run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/gitget-application
 
-  run-docker-image-on-ec2:
-    needs: build-docker-image
-    runs-on: self-hosted
-    steps:
-      - name: execute deploy.sh
-        run: sh /home/ec2-user/deploy.sh
+      - name: Upload to S3
+        run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://$AWS_S3_BUCKET/$GITHUB_SHA.zip
 
-      # Slack Webhook 설정
-      - name: action-slack
-        uses: 8398a7/action-slack@v3
-        with:
-          status: ${{ job.status }}
-          author_name: Backend
-          fields: repo,commit,message,author
-          mention: here
-          if_mention: failure,cancelled
-        env:
-          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
-        if: always()
\ No newline at end of file
+      - name: EC2에 배포
+        run: aws deploy create-deployment --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name ${{ env.AWS_CODE_DEPLOY_GROUP }} --s3-location bucket=$AWS_S3_BUCKET,key=$GITHUB_SHA.zip,bundleType=zip
\ No newline at end of file