인프런 커뮤니티 질문&답변
몇 가지 질문드립니다.
해결된 질문
작성
·
36
·
수정됨
0
강의 잘 듣고 있습니다.
1.
저도 다른 분들처럼 기존 express 서버가 80 포트를 사용하고 있어서 스프링 부트 서버 실행이 안 됐었습니다.
지금은 결국 해결했는데
저는 lsof -i :80를 해도 아무것도 안 보였었고
pm2 kill을 해도 제대로 안 죽었었습니다
sudo lsof -i :80
sudo pm2 kill을 하니깐 드디어 됐는데, 원래라면 sudo를 안 붙여도 됐어야 했나요?
제가 뭔가를 생략해서 sudo를 일일이 붙여야 했던 건가? 싶어서 질문드립니다.
express 서버 시작한 이후에, 연결된 인스턴스 창을 끄고, 다시 새로 연결한 후에 스프링 부트 강의를 듣기는 했습니다. 새로 연결해서 그런 걸까요?
2. 스프링 부트든 express 서버든 실행한 이후에(sudo java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar로 실행한 서버), 서버를 안 끄고 그냥 인터넷 브라우저를 꺼 버리면, 우분투에선 계속 실행되고 있는 건가요? 그러면 AWS 비용이 늘어나는 걸까요?
그리고 인스턴스도 중지해 두는 게 낫나요? 탄력적 IP 때문에 어차피 비용 발생할 텐데, 인스턴스 중지를 해 두면 비용이 덜 나가는지 궁금합니다.
3. 스프링 부트 서버 배포 강의 다음이 24. 비용 나가지 않게 EC2 깔끔하게 종료하기
이거인데, EC2 삭제하는 것도 그대로 따라해도 이어서 25. Route53 강의 내용 진행할 수 있는지, 아니면 삭제 안 해야 하는지 궁금합니다.
참고 자료를 보면 "'[보충 강의] 7-2. Spring Boot 서버를 EC2에 배포하기'를 따라하시다 보면
EC2 인스턴스의 사양이 부족해서 EC2가 멈춰 버리거나 버벅거리거나...." 이런 내용이 있는데,
저는 이걸 따라하지 않았는데 문제가 없었습니다. 그런데 제가 된다는 건 저랑 같은 인스턴스 사양(인스턴스 유형이 인스턴스 사양 맞죠?)인 사람들 모두 문제가 없었지 않을까? 싶은데, 강의 내용대로 인스턴스 사양을 설정하더라도 누군가에겐 오류가 생길 수 있나요?
답변 2
1
안녕하세요 ! 질문 잘해주셨어요 ~
질문해 주신 내용들에 대해 하나씩 답변드려 볼게요 !
"sudo 관련 질문"
-> sudo를 붙여야 했던 건 권한 문제 때문이에요 ! Express 서버를 실행할 때 sudo pm2 start app.js로 실행하셨다면, 그 프로세스는 root 권한으로 실행되고 있는 상태에요 ! 따라서 그 프로세스를 종료하거나 조회할 때도 동일하게 sudo를 붙여야 해요 ! 추가로 인스턴스를 새로 연결하는 건 이 문제와는 관련이 없어요 :)
" 인터넷 브라우저를 꺼 버리면, 우분투에선 계속 실행되고 있는 건가요? 그러면 AWS 비용이 늘어나는 걸까요?"
-> 네 ~ 브라우저를 끄더라도 EC2 인스턴스에서 실행 중인 서버는 계속 돌아가고 있어요 ! sudo java -jar 명령어로 실행한 서버는 터미널을 종료하면 같이 종료되지만, pm2나 nohup으로 실행한 서버는 백그라운드에서 계속 실행돼요 ! 그래서 인스턴스가 실행 중이면 시간 당 비용이 계속 발생해요 :)
"인스턴스도 중지해 두는 게 낫나요? 탄력적 IP 때문에 어차피 비용 발생할 텐데, 인스턴스 중지를 해 두면 비용이 덜 나가는지 궁금합니다."
-> 인스턴스를 중지해두면 비용이 덜 나가요 ! 인스턴스가 중지되면 인스턴스 요금은 발생하지 않고, 스토리지(EBS)과 탄력적 IP 비용만 나가서 비용이 덜 나가게 되요 :)
"EC2 삭제하는 것도 그대로 따라해도 이어서 25. Route53 강의 내용 진행할 수 있는지, 아니면 삭제 안 해야 하는지 궁금합니다."
-> 해당 삭제하는 강의 따라 하셔도 26강에서 다시 EC2를 생성해서 "25. Route53 강의" 내용을 진행할 수 있어요 :)
"내용대로 인스턴스 사양을 설정하더라도 누군가에겐 오류가 생길 수 있나요?"
-> 네 ~ 같은 인스턴스 유형을 사용하더라도 사람마다 문제가 생길 수도, 안 생길 수도 있어요 ! Spring Boot 빌드(./gradlew clean build) 시점에 메모리를 많이 사용하는데, 이때 EC2에서 실행 중인 다른 프로세스가 있다면 메모리 부족으로 멈출 수 있어요 !
예를 들어 이전 실습들을 통해 생성된 프로세스가 정리가 안되어 있거나, 실습 도중 개개인마다 추가로 디버깅이나 테스트를 하면서 메모리를 더 사용하게 되는 경우가 있을 수 있어요 ! 이런 경우들 때문에 같은 사양이라도 사람마다 다른 결과가 나올 수 있어요!
추가로 또 궁금하신 점 있으시면 편하게 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 11 1님.
Spring Boot 서버와 관련된 질문에 대해 답변드리겠습니다.
1. sudo 사용 이유
기본적으로 lsof와 pm2 명령어는 시스템 프로세스를 관리하는 역할을 하기 때문에, 루트 권한을 필요로 하는 경우가 많습니다. sudo 없이 작동하지 않았던 것은 해당 명령어가 루트 권한이 필요한 상황에서 발휘되었기 때문입니다. 이는 연결된 인스턴스 창을 새로 했기 때문에 발생한 문제는 아닙니다. 보통 서버 관리나 특정 시스템 명령을 사용할 때는 sudo를 앞에 붙여 실행하는 것이 일반적입니다.
2. 서버 실행 및 비용 문제
서버를 실행한 후에 인터넷 브라우저만 종료한 경우, 그 서버는 여전히 백그라운드에서 실행되고 있습니다. 이는 AWS 인스턴스가 계속 실행 중이라는 의미이며, 인스턴스 자원을 사용하는 동안에는 AWS 비용이 발생할 수 있습니다. 따라서 사용이 끝난 경우에는 서버를 종료하거나 인스턴스를 중지하여 불필요한 비용이 발생하지 않도록 해야 합니다.
3. EC2 종료와 강의 진행
강의에서 설명하는 대로 EC2 인스턴스를 종료하시면 AWS 자원에 대한 비용이 발생하지 않습니다. 이어지는 강의인 25. Route53에서는 DNS 관리를 다루므로, EC2 인스턴스를 삭제한 상태에서도 진행 가능할 것입니다. 하지만 Route53 강의에서 다시 서버를 테스트하거나 실행해야 한다면, 새로운 인스턴스를 생성하라는 안내가 있을 수도 있습니다. 강의 내용을 따라 진행하시면서 인스턴스 관리에 대한 지침을 참고하시면 됩니다.
추천드린 유사한 해결 방법을 소개한 링크를 참고하시면 도움이 될 것입니다:
- 인스턴스에 배포한 Express 서버 중지 시키고 삭제 하는 방법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




