Fact
- 오늘 아침에 프로그래머스에 있는 네트워크 문제를 풀려고 했다. 이해와 계획을 README에 작성하며 실제 코드를 작성하기 전에 문제에 대한 이해와 문제 풀이 방향을 생각했다. 그러나 계획을 안일하게 세웠는지 코딩 중에 계획이 잘못됐다는 걸 알았다. 그땐 이미 제한시간인 30분이 넘어서 사실상 문제 해결에 실패했다.
-
오늘도 CodeDeploy에 대한 자동 배포를 어떻게 하는지 공식 문서와 다른 블로그를 검색을 하면서 공부를 했다. 공부하면서 알게 된 게 CodeDeploy 안 쓸 때도 CD를 이룰 수 있는 방법이 많았지만 CodeDeploy를 쓰는 전제하에도 CD를 이룰 수 있는 조합이 많다.
그 중에서 나는 AWS CodePipeline과 CodeBuild를 이용하여 CD를 구성하려고 했었다. 처음에는 AWS CodePipeline 을 써서 로컬에서 push를 할 시에 AWS CodePipeline이 github에서 코드를 가져와서 AWS CodeBuild로 잘 가져오는지 확인을 하는 작업을 했다. 그러나 build를 하기 위해서 작성했던 buildspec.yml를 작성을 제대로 하지 않아서 에러가 계속 떴었다. 보니 공백에 민감해서 공백이 어딘가에 하나 더 있던가 덜 있으면 터지는 문제였다. AWS CodeBuild가 제대로 작동이 되게끔 만드니 CodePipeline이 다음 작업인 CodeDeploy를 실행을 시켰는데 여기서도 에러가 떴다. 에러가 뜬 이유는 appspec.yml을 양식에 맞게 작성을 하지 않아서였다. 양식에 맞게 설정을 하니 CodeDeploy가 deploy가 되었다. 그 후에는 AWS CodeBuild를 쓰면 돈이 나가니 CodeDeploy를 수동으로 해서 이게 나의 프로젝트를 github에서 잘 가져가서 deploy를 설정대로 제대로 하는지 확인을 했다. 또한 github에 안 올린. env나 config 파일들을 미리 ec2에 넣어 놓고 CodeDeployAgent를 써서 bash 파일로 작성한 script를 실행함으로써 github에서 가져온 repository를 ec2에 배치 후 ec2 다른 폴더 내에 있는 것을 복사하게끔 만들었다.
그럼으로써 로컬에서 프로젝트를 웹팩으로 돌린 결과랑 동일하게 브라우저에 출력이 되게끔 만들었다.
Feeling
-
아침에 문제를 못 푼 이유는
내가 너무 안일해서 그랬던 것 같다. 분명 dfs/bsf 문제였는데 그냥 룹을 돌려서 하면 된다는 생각을 해서 계속 짰었다.
다음엔 문제 유형을 잘 파악하고 해당 유형에 알맞은 문제 풀이 방식을 적용해야 할 것 같다.
- CD를 이루기 위해서 쓸 수 있는 방법은 많으나 어떻게 써야 할지는 익히기에 너무 어려운 것 같다. 특히 나에 딱 맞는 케이스는 없고 부분적으로 비슷비슷한 점이 있는데 그것을 조합하여 써야 하는데 그 부분 부분을 이으는 게 너무 어려운 것 같다.
Finding
- DFS/BFS는 무조건 재귀로 푸는 게 맞다. DFS는 미로 탐색이나 이동경로에 가중치가 있는 문제를 풀 때 쓰기 좋다.
- CodePipeline은 AWS의 서비스 중 하나인데 github에서 코드를 올릴 시에 그것을 가져와서 AWS CodeBuild에 던져 준다. CodeBuild에서 통과가 되면 AWS CodeDeploy에다가 코드를 또 던져 준다.
- CodeBuild는 githubAction 과 비슷하게 프로젝트 안에 있는 buildspec.yml에 따라 build 과정을 거치게 된다. buildspec.yml을 작성을 할 때 공백 기준이 엄격하여 하나라도 잘못되어 있다면 에러가 나서 build failed가 뜬다.
- CodeDeploy는 프로젝트 안에 있는 appspec.yml에 따라 deploy 과정을 거친다. 이때 기본적인 작성 방식은 version, os, files, hooks가 된다. version은 appspec의 version이고 os는 deploy 하는 곳의 운영 시스템 종류이다. files 밑에 속하는 source의 위치를 기재하고 destination은 deploy 하는 곳의 원하는 설치 경로다. hooks는 설치 전과 설치 후에 무엇을 실행할지 일련의 명령어를 기술을 할 수 있다. 이것들은 deploy 하는 곳에 설치한 CodeDeployAgent가 해준다. 또한 명령어들은 bash 파일로 묶어서 따로 파일을 만들어서 작성을 할 수 있다.
Future action
- 문제를 풀 때 그 유형을 빨리 캐치해서 그에 맞는 풀이법을 빨리 찾는 훈련을 많이 해야겠다.
- 쓸 수 있는 방법이 많을 때 한번 정리를 해보고 나에게 맞는 것을 추려서 거기에서 골라서 쓰도록 하자.