본문 바로가기
반응형
AWS Swap memory 활용으로 메모리 부족 해결하기 대부분의 많은 분들이, 프로젝트 초반 구축에 있어서 AWS EC2 프리티어를 사용합니다.프리티어의 인스턴스는 t2.micro 타입이며, 램이 1GB 유형을 갖고 있기 때문에 EC2 인스턴스에서 서버 하나를 띄우고, AWS RDS 사용 대신에 데이터베이스 서버까지 함께 EC2에 띄운다면메모리 부족 현상이 발생할 수 있습니다. 메모리 부족 현상으로 인해 서버가 다운되거나 인스턴스가 다운될 수 있습니다.프로젝트 초반 운영에서는 한정적인 자원으로 운영할 필요가 있기 때문에, 프리티어를 포기하기도 리소스적으로 애매합니다.   이럴 땐 swap memory 할당을 활용하면 됩니다.EC2의 디스크 용량을 이용해서 부족한 메모리를 대체하는 공간을 swap memory 라고 합니다.이번 글에서는 리눅스에서 swap fi.. 2024. 6. 19.
AWS 불완전한 멀티파트 업로드 용량 관리하기 백엔드 서버를 개발함에 있어서 파일 업로드 기능을 구현할 때 대표적인 방법은 3가지가 있습니다. 1. Stream2. MultipartFile3. AWS Multipart upload 1, 2번 방식을 이용하면 파일 업로드나 임시 파일 관리에서 결국 서버를 경유해야 하기 때문에하나의 통합된 서버에서 서버의 리소스가 충분치 않다면, 업로드 작업을 처리하느라 다른 작업들에 대해 영향을 받을 수 있게 됩니다. 적은 자원으로 서버를 운영하면서 파일 업로드도 구현하기 위해서는 3번 방법이 적절하나, 구현 난이도는 제일 복잡하며이는 단순 이미지 파일만 업로드가 필요한 서비스의 경우에는 오버엔지니어링이라고 볼 수도 있습니다.   저는 파일/이미지 업로드를 제공하는 서비스이기에 3번(AWS Multipart uploa.. 2024. 6. 18.
내가 두고두고 쓰는 Docker 설정들 총 정리 (EC2 & NginX & SpringBoot & MySQL) Kotlin SpringBoot 백엔드를 개발하고 있습니다.이제 EC2에 배포하기 위해서 프리티어 계정을 생성하였고, EC2를 생성했습니다. EC2 생성 시 Amazon Linux 2 를 사용했고, 프리티어는 30GB 볼륨까지 사용할 수 있으므로 그렇게 지정해줍니다.Nginx가 80 포트로 다뤄질 것이므로, 인바운드 규칙으로 80포트도 열어줍니다.  원래는 Docker를 활용함에 있어서, SpringBoot 서버 jar 파일을 image 화 시킨 뒤에, Docker Hub에 올려주고EC2에서 이 Docker Hub에 접속해야 하는데, Docker Hub는 Private 저장소를 사용하려면 유료 요금을 지불해야 합니다. 또한 git 역시 저는 private repository로 진행하고 있기 때문에, sc.. 2024. 4. 10.
게시글 읽어올 때, 좋아요 수랑 댓글 수를 어떻게 처리할 것인가? 서비스를 처음 운영할 때에는, 프론트와 백을 모두 개발해야 하기 때문에,, 보통 비용 감소를 위해 서버리스를 많이 도입하고 있지만 (고정 비용도 나가지 않아서 좋음) 최근에 개발중인 서비스는 백엔드까지 개발하고 있습니다. 한정된 AWS 프리티어로 초반을 유지해야 하기 때문에, 쿼리 최적화도 당연히 필수적으로 생각해보게 되었습니다. Post - Comment 는 1 : N 관계이고 Post - UserLike 또한 1 : N 관계이며 Post - UserDownload 또한 1 : N 관계입니다. JPQL을 이용한 Fetch Join 쿼리를 작성하던, EntityGraph를 이용하던, QueryDSL을 이용하던 OneToMany 여러개의 Fetch Join은 메모리와 성능상 이슈가 존재합니다. Fetch .. 2024. 4. 10.
반응형