아니 왜 배포 실패함... 그동안 잘 되던 배포가 특정 시점부터 되다가 안되다가를 반복하는 일이 발생했다. 가장 큰 문제는 어쩌다 될 때도 있다는 것이다. elastic beanstalk 에러 메시지 상으론 npm 설치를 못했다고 eb-engine.log를 참고하라고 나온다. Instance deployment: 'npm' failed to install dependencies that you defined in 'package.json'. For details, see 'eb-engine.log'. The deployment failed. 일단 로그 확인에 앞서서 npm 버전이나 새롭게 추가된 패키지 dependency등을 확인해봤다. 이전에 배포한 버전과 큰 차이는 없었다. Error: Command..
전체 글
군대에 와서 싸지방에서 개발을 할 방법을 강구하다가 Github codespaces라는 아주 착한 서비스를 찾아냈다. github에서 서버를 빌려주고 거기서 코드를 돌릴 수 있게 해주는 PaaS였다. (지난번에 aws 행사에 참여하였을 때 AWS에서도 비슷한 기능을 가진 서비스를 내놨었는데 어느게 시장을 선점할 지 궁금하다.) 해당 서비스와 개발 환경 세팅에 대해서는 나중에 따로 글을 적어보겠다. codespaces에서 개발을 하려고 node package를 yarn으로 설치하려고 하는데 node version 에러 메시지가 나왔다. The engine "node" is incompatible with this module. Expected version "20.1.0". Got "18.17.0" 음 노..
백준 14938번 서강그라운드 문제 파이썬 풀이입니다. 14938번: 서강그라운드 (acmicpc.net) 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 2017 SPC에 출제 되었던 문제입니다. 한 노드에서 각 노드까지의 최단거리를 알아야하기에, 최단 경로 탐색 알고리즘인 다익스트라(Dijkstra) 알고리즘으로 풀 수 있는 문제입니다. 다익스트라 알고리즘은 N*logN 시간복잡도를 가지게 되는데, 총 N개의 노드를 시작점으로 탐색해야기에 N개 * N*logN 의 시간복잡도를 필요로 하고, N은 최대 100이기에..
이것저것 많은 준비 끝에 군대가는 것이 확정되었다. 결론부터 말하면 '공군 정보보호병'이라는 병과로 입대하게 되었는데, 여러 이유가 있었지만 공부와 컴퓨터에 대한 감?을 잃고 싶지 않았다. 그래서 최대한(그나마) 컴퓨터와 친밀도를 유지할 수 있는 보직을 준비하려했다. 공군 정보보호병 경쟁률경쟁률은 평균적으로(요즘 육군 정보보호병이 폐지되고 좀 많이 늘어난거 같다) 5.대 정도는 되는 것 같다. 1차 선발1차는 출결 + 가산점인데 (고등학교 출결) + (헌혈, 국가유공자, 다자녀, 한국사&영어 공인시험 등의 가산점)으로 산정된다. 고등학교 출결이 결석이 없으면 10점인데, 이번에 컷이 12점인걸로 보아 가산점 조금만 챙기면 1차는 무난히(운이 나쁘지 않다면) 통과할 수 있을것이다. 2차 선발문제는 2차인데..
예전에 AWS S3에 자동 배포를 위해서 걸어둔 github action을 업데이트를 위해 오랜만에 실행할 일이 생겼다. 그런데 push 이후 배포 되었다고 왔어야할 알림이 10분 째 오지 않는 것이다. 다른 test를 거치는 것도 아니고, 그냥 react를 build해서 s3에 배포하는 과정인데, 평소였으면 1분 안쪽으로 끝났어야 할 일이다. 깃헙에 들어가보니 10분이 넘도록 돌아가고는 있다. 근데 ubuntu 작업 환경 세팅을 못하고 있었다. 찾아보니 ubuntu-18 버전을 github에서 지원하지 않기로 하였다고 한다. - https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-b..
정적인 웹 사이트, 기본적인 html+css+js 외에도 react 등의 프레임워크를 이용해서 개발할 수 있다. 많이 받는 질문 중 하나가 '프론트엔드로 웹 서비스를 만들었는데, 어떻게 배포하냐?'라는 부분이다. 그리고 과거의 나를 포함해서 많은 뉴비들이 실수하는 부분이 EC2와 같은 리눅스 서버를 구매해서 개발할 때 처럼 'npm start' 등으로 백그라운드에 실행해두는 방식이다. 그러면 속도도 느려지고, 서버 메모리도 많이 잡아먹고, 서버비용도 꼬박꼬박 내야하는 아주 안좋은 방식이다. (심지어 경험상 Docker로 react를 한번 감싸서 EC2에 배포한다? 그러면 t*.micro 프리티어에선 돌아가지도 않는다.) 그래서 S3에 업로드하는 방식으로 정적 웹 사이트를 호스팅할 수 있는데 간단히 생각하..
코엑스에서 진행되는 2023 AWS summit seoul에 다녀왔습니다. 코로나 이후 3년만에 열리는 행사라 규모있게 진행되었다고 합니다. 크게 발표와 부스로 나눠져있었는데, 발표에선 기술적인 부분이나 AWS 서비스 활용 방법에 대한 설명이었고, 부스에서는 AWS 관련 클라우드 서비스의 자사제품 홍보가 대부분이었습니다. AWS 관련된 서비스 특히 외부 구축이나 Devops 비용 절감툴 등 몰랐던 서비스들도 겉핥기 해볼 수 있어서 재미있었습니다. 크게 관심 있던 부스는 2곳 정도였는데, 최근 애용중인 Terraform을 개발하는 Hashicorp라는 회사와 프로젝트에 도입을 고려중인 Datadog 부스였습니다. 특히 datadog 부스에서는 직접 엔지니어분의 설명을 들을 수 있었는데, 그동안 Sentry..
크롤링을 위해 crontab을 써야할 일이 생겼는데, 재배포의 효율성을 높이고 서버의 설정을 코드로 관리하기 위해 관련된 내용을 공부해봤다. crontab이란? 소프트웨어 유틸리티 cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다. 소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용한다. 출처 위키백과 : https://ko.wikipedia.org/wiki/Cron 이때 crontab은 cron table에 줄임말로 cron의 명세를 해놓은 파일이다. crontab 사용하기 crontab -e# crontab 편집 crontab -l# crontab 내용 보기 crontab -r# cronta..
크롤링을 할 일이 생겼는데, 파이썬 코드로 작성된 파일 여러개를 동시 실행하다보니 t*.micro에서는 원활하게 돌아가지 않고, 버벅거림이 있었다. 최소 small, medium에서 돌려야 깔끔하게 돌아가는걸 확인했다. 이제 금액이 고민이었다. medium 온디멘드로 띄워 놓으면 좋겠지만 한달에 나가는 비용이 만만치 않을 것이다. 그렇다고 크롤링 할 때마다 켰다 끄자니 너무 귀찮은일... 그래서 spot instance를 생성해서 가격적인 측면을 타협하고, 생성/삭제 과정을 terraform으로 관리하고자한다. 기본적인 설치/세팅은 shell script로 관리하고, crontab을 이용해 자동화 시킨다. Terraform 설정 1. aws provider 설정 - IAM 계정 정보는 aws cli로 로..
그동안 프로젝트를 배포하면서 elastic beanstalk(엘라스틱빈스톡)를 애용해왔는데, 이번에 terraform으로 인프라 생성 과정을 코드화하려고 한다. 공부하다보니 내가 elastic beanstalk을 완벽하게 이해하지 못한 부분이나 놓치고 있는 setting variable들이 있어서 이번 기회에 정리하면서 공부해보고자 한다. Elastic Beanstalk이란? AWS에서는 아래와 같이 설명하고 있다. 'AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go 및 Docker를 사용하여 개발된 웹 애플리케이션 및 서비스를 Apache, Nginx, Passenger 및 IIS와 같은 친숙한 서버에서 손쉽게 배포하고 확장할 수 있는..