오늘은 스프링 프로젝트와 AWS S3 버킷을 연동하여 사용하는 방법을 정리해보겠습니다.1. AWS S3란?AWS S3란 Simple Storage Service의 약자로, 주로 파일 서버에 이용됩니다.모든 종류의 데이터를 원하는 형식으로 저장저장할 수 있는 데이터의 전체 볼륨과 객체 수에는 제한이 없음Amazon S3는 간단한 key 기반의 객체 스토리지이며, 데이터를 저장 및 검색하는데 사용할 수 있는 고유한 객체 키를 할당.Amazon S3는 간편한 표준 기반 REST 웹 서비스 인터페이스를 제공2. AWS S3를 사용하는 이유여러가지가 있겠지만, 아래 두가지 이유가 가장 큽니다.확장성(Scalability) : 파일 서버는 트래픽이 증가함에 따라 서버 인프라 및 용량 계획을 변경해야 되는데, S3가..
분류 전체보기
EC2에서 실행되고 있는 SpringBoot 서버의 사진을 저장하는 기능이 잘 되다가 갑자기 500에러를 냈습니다. 로그를 확인해보자 java.io.IOException: java.io.FileNotFoundException: [이미지 이름] (No space left on device) 와 같은 에러를 뱉어내었고 수시간의 삽질 끝에 EC2 용량을 늘려주어야한다는 사실을 알았습니다. 1. 용량 확인 $ df -Th 위 명령어를 통해 용량을 확인해보면 /dev/xvda1 용량이 8.0G/8.0G (100%)로 꽉 찬것을 알 수 있습니다. 2. EBS 볼륨 크기 수정 인스턴스 요약에서 스토리지로 들어가줍니다. 볼륨 크기가 8GiB인 것을 확인하고 볼륨 ID를 눌러 들어가줍니다. 해당 볼륨을 선택하고 작업 >..
웹개발을 진행하고 빌드 및 배포까지 하게됩니다. SpringBoot는 내부 서버가 내장되어있어 jar 파일 빌드 및 실행이 쉽습니다. 오늘은 SpringBoot + Gradle 프로젝트를 Jar 파일을 이용하여 빌드하는 방법을 알아보겠습니다. 필자는 MacOS를 사용하고 있으며 Linux도 동일한 방법으로 빌드, 실행이 가능합니다. 1. 빌드 1) 프로젝트 폴더로 이동 $ cd [Project Directory] ls 명령어를 사용하여 gradle.build, gradlew 파일을 확인할 수 있습니다. 2-1) 빌드 실행 $ ./gradlew build 2-2) 이전 빌드 초기화 $ ./gradlew clean 2-3) 이전 빌드 초기화 후 빌드 실행 $ ./gradlew clean build 2. Ja..
1. 배경 AWS EC2에 서버를 구동하고 대용량의 이미지를 처리하는 기능을 사용하자 CPU 사용량이 급격히 늘어나며 서버가 죽어버렸습니다. 다시 ssh 접속을 해봐도 timeout.. 매번 인스턴스를 껐다 킬수도 없는 노릇이고 가난한 개발자는 비싼 요금제를 사용하기도 힘들기에.. Swap 메모리를 통해 문제를 해결해보았습니다. ec2 스펙 OS: Amazon Linux 인스턴스 유형: t2.micro (1 GiB 메모리) 용량: 8 GiB 2. Swap 메모리란? Swap 메모리란 실제 메모리보다 많은 메모리가 필요할 때 하드디스크를 이용하여 부족한 메모리를 대체할 수 있는 공간입니다. 실제 디스크를 메모리처럼 사용하는 개념이기 때문에 가상 메모리라고 할 수 있습니다. 그리고 그만큼 속도는 현저히 떨어..
서비스를 운영하는데에는 모니터링이 정말 중요합니다. 오늘은 Log4j2를 사용해 로그를 남기는 방법에 대해 알아보겠습니다. 전체 코드는 https://github.com/DevDotUng/Log4j2 에서 확인할 수 있습니다. GitHub - DevDotUng/Log4j2 Contribute to DevDotUng/Log4j2 development by creating an account on GitHub. github.com 1. 왜 Log4j2인가? Spring 로깅 구현체는 Logback, Log4j, Log4j2 등 여러가지가 있지만 Log4j2를 사용하는 이유는 성능일 것입니다. 위 사진들과 같이 동일 쓰레드 기준 동기, 비동기 처리 속도 모두 Log4j2가 월등히 빠릅니다. 참고: https:..
안녕하세요. 오늘은 타임리프를 알아보고 예제를 만들어 사용해보겠습니다. 전체 코드는 https://github.com/DevDotUng/Thymeleaf 에서 확인할 수 있습니다. GitHub - DevDotUng/Thymeleaf: [Spring boot] Thymeleaf 예제 [Spring boot] Thymeleaf 예제. Contribute to DevDotUng/Thymeleaf development by creating an account on GitHub. github.com 1. Thymeleaf란? 타임리프는 웹과 독립 실행형 환경을 위한 모던 서버 사이드 자바 템플릿 엔진입니다. 타임리프를 사용해 서버에서 HTML을 동적으로 렌더링할 수 있습니다. 타임리프는 순수 HTML을 유지하려는..
안녕하세요. 오늘은 플러터로 라이브러리를 사용하지 않고 달력을 구현하려 합니다. 라이브러리를 사용하자니 커스텀 하기도 어렵고 원하는 디자인을 만들기도 힘들어 직접 구현해보겠습니다. 전체 코드: https://github.com/DevDotUng/Calender GitHub - DevDotUng/Calender Contribute to DevDotUng/Calender development by creating an account on GitHub. github.com 구현 화면 전체 코드 더보기를 누르시면 코드를 보실 수 있습니다. 더보기 import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp ex..
안녕하세요. 저번 포스팅에서 POI를 사용하여 엑셀 파일을 읽어오는 방법을 알아보았습니다. 이번 포스팅에서는 엑셀 파일 내의 이미지를 추출하는 방법을 알아보겠습니다. 전체 코드는 https://github.com/DevDotUng/Excel-Read 에서 확인할 수 있습니다. 기대 결과 엑셀 파일 내의 이미지를 원하는 경로에 저장 이미지 이름을 DB에 저장 저장한 이미지를 화면에 출력 결과 화면 1. Controller 작성 ExcelImageController.java package com.excel.domain.image.controller; import com.excel.domain.image.service.ExcelImageService; import org.apache.poi.ss.usermod..