본문 바로가기

반응형

분류 전체보기

(218)
[중고거래장터] Server Architecture 다른 사람들의 프로젝트 리포지토리를 보면 Server Architecture를 멋지게 만들어 놓은 것을 자주 볼 수 있습니다. 저는 그것이 부러웠습니다. 미적으로 멋있다는 것이 아니고 복잡한 설계를 할 수 있는 지식이 부러웠습니다. 이번 프로젝트에서 제가 설계한 구조입니다. 처음부터 이렇게 설계하지 않았습니다. 아니, 처음에는 개발 환경 설정 및 구현 자체가 버거웠기 때문에 설계 작업 자체를 생각하지 못했습니다. 그래서 모든 작업이 끝나고 문서 작성을 하면서 "아, 내가 이렇게 구현했었구나?" 하는 느낌으로 앞에서 뒤로 천천히 톺아보면서 구조를 정의했습니다. 이 작업을 통해 느낀 점은, 처음부터 설계 방향을 잡고 구현했다면 작업 속도 및 결과물이 지금보다 더욱 좋았겠다는 것입니다. 설치 및 사용과는 별개..
[중고거래장터 - Study&Refactoring] Spring Rest Docs 적용을 통한 API 문서 작성 개발한 중고거래장터 wiki 페이지에 등록할 API 문서를 작성하기 위해 Spring Rest Docs를 사용하기로 결정했습니다. Swagger도 많이 사용하지만, Swagger는 API 테스트 작업에 특화되어 있습니다. 테스트가 아닌 문서 작성 기능만 필요하기 때문에 Swagger와 비교해서 좀 더 깔끔한 문서를 만들 수 있는 Spring Rest Docs를 선택했습니다. Spring Rest Docs 적용에 다음과 같은 기술을 사용했습니다. Spring 5 Maven JUnit4 MockMVC AsciiDoc 그리고 개발 환경은 다음과 같습니다. Spring Legacy Project(MVC) Spring 5.0.7 Maven Java 1.8 MySQL 8.0.27 Redis-x64-3.2.100 구..
[Spring] Spring MVC 프로젝트 정적 리소스 접근 경로 설정 일반적으로 정적 경로의 파일은 파일의 접근 경로를 URL로 명시하면 바로 읽을 수 있습니다. Spring MVC 프로젝트에서 정적 경로를 설정하는 방법은 두 가지가 있습니다. XML 설정 WebMvcConfigurer 인터페이스 사용 XML 설정 servlet-context.xml mapping : 매핑 URI 설정 location : 정적 리소스의 위치 설정 WebMvcConfigurer 인터페이스 사용 Spring에서 제공하는 WebMvcConfigurer 인터페이스의 addResourceHandlers() 메소드를 오버라이딩 해서 설정할 수 있습니다. public class WebConfiguration implements WebMvcConfigurer { @Override public void a..
Serialization 그리고 Deserialization Serialization이란 메모리에 객체를 저장하기 위해 전송 객체를 바이트 형태로 저장하는 것입니다. 이렇게 하면 객체의 상태를 다양한 형태로 저장할 수 있습니다. 저장된 객체를 다시 가져오려면 Deserialization 작업을 합니다. 동작 방식은 Serialization의 반대 입니다. Serialization과 Deserialization 작업은 플랫폼 독립적입니다. 즉 A라는 플랫폼에서 Serialization 작업을 한 객체를 B 플랫폼에서 Deserialization 할 수 있습니다. 각 플랫폼 형식에 맞는 Serialization, Deserialization 방식을 통해 객체에 대한 읽기/쓰기 작업을 할 수 있습니다. 참고 https://hazelcast.com/glossary/ser..
[중고거래장터 - Study&Refactoring] 캐싱 기능 적용(Spring MVC + Redis + Jedis) Java 클래스 방식 Redis를 통한 캐싱 기능 설정은 XML 파일 작성 또는 Java 클래스 설정 두 가지 방식이 있습니다. 지난 글에서는 XML 파일 작성 방식을 소개했기 때문에 이번에는 Java 클래스 방식으로 Redis 캐싱 기능 설정 방식을 소개하겠습니다. 지난 글에 소개한 XML 방식과 마찬가지로 Redis + Jedis 방식으로 구현했습니다. 개발환경 Spring Legacy Project(MVC) Spring 5.0.7 Maven Java 1.8 MySQL 8.0.27 Redis-x64-3.2.100 redis 사용을 위한 의존성 설정을 pom.xml 파일에 합니다. pom.xml org.springframework.data spring-data-redis 2.1.3.RELEASE redis.clients j..
[AWS] Amazon Linux 환경에서 Java 1.8, Tomcat9, Jenkins, Redis, Maven 설치 + Nginx 설치 + Hostname 변경 AWS로 배포 작업을 하려면 배포 작업에 필수적인 프로그램을 설치해야 합니다. 필수적인 프로그램의 기준은 로컬 환경에서 개발자가 구현에 사용한 프로그램입니다. 저는 아래와 같은 작업 환경에서 서비스를 구현했고, 해당 프로그램을 서버에 설치해야 합니다. Java 1.8 Tomcat 9 Maven Jenkins Redis Java 1.8 설치 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 설치 후 확인 java -version Hostname 변경 sudo hostnamectl set-hostname [호스트 이름] 작업 후 인스턴스 재부팅 sudo reboot Tomcat 9 설치 https://tomcat.apache.org/download-90.cgi Ap..
[AWS] Spring 프로젝트를 AWS로 배포[5] RDS 생성을 통한 프로젝트 DB 구축 구현 환경 Spring Legacy Project(MVC) Maven Java 1.8 MySQL 8.0.27 Amazon Linux 인스턴스 생성을 통한 가상 서버 환경에서 war 파일로 프로젝트 배포를 완료했습니다. 만약 DB를 사용하지 않는다면 여기서 마무리해도 상관없지만, DB를 사용한다면 DB를 구축해서 사용할 수 있도록 만들어야 합니다. 이 작업이 누락되면 프로젝트를 실행할 수 없습니다. 저는 DB로 Oracle을 사용해서 구현했습니다. AWS에서는 Oracle RDS 프리티어를 제공하지 않습니다. 그래서 서버 내부에 Oracle을 설치한 후 연동할 수 없을까 찾아보았지만, Oralce 설치 자체도 쉬운 일이 아니었습니다. 결국 Oracle 설치까지 완료했지만, 어떻게 프로젝트와 연결해야 할지 ..
[중고거래장터 - Study&Refactoring] Oracle ~> MySQL로 이동 구현한 프로젝트를 AWS를 통해 배포할 예정이기 때문에 DB 구성을 Oracle에서 MySQL로 변경했습니다. 배포 작업을 할 때 AWS RDS를 통해 DB 정보도 함께 가져와야 하는데 Oracle은 프리티어를 제공하지 않습니다. 예전에는 프리티어를 제공했지만 더 이상 제공하지 않습니다. 그래서 구글에 돌아다니는 Oracle 프리티어를 사용한 AWS RDS 포스트는 그림의 떡이 되었습니다. 그래서 이클립스에서 Docker Image를 생성해서 Docker Hub를 통해 AWS 인스턴스로 가져오는 방식으로 배포하려고 했으나 이클립스에서 Docker Image 생성하는 방법을 아직 잘 모르겠습니다. Docker Hub에서 Image를 생성하는 방법도 있지만 사용료를 지불해야 합니다. 그래서 카드 번호를 입력..

반응형