본문 바로가기

전체 글

(56)
[HANTA] 도메인 구매 및 가상 서버 호스팅 + 네임 서버 변경 지난주 드디어 도메인을 구매하고 가상 서버 호스팅을 받았다. 이제 더운 여름에 집에서 방 온도를 낮추려고 고생을 하지 않아도 되고 프론트엔드 개발자와 커뮤니케이션 하는데 있어서도 셋팅해두었던 Swagger 문서로 진행할 수 있어 개발 속도도 빨라질거란 생각이 든다. 먼저 Godaddy에서 구매한 도메인을 호스팅 받은 가상 서버의 주소와 연결해야 하기 때문에 Godaddy 기본 네임 서버로 설정되어 있는 것을 호스팅업체의 네임서버로 설정해준다. 중간에 네임서버를 바꾸지 않고 단순히 도메인 포워딩을 통해 해결하려고 했었는데 이 경우 도메인을 입력해도 결국 접속은 아이피 주소로 직접 되어 아이피주소가 노출되는 문제가 있어서 네임서버 설정을 해주었다. 이렇게 진행하고 나서도 포워딩이 풀리지가 않아서 문의를 했더..
[SpringBoot] Spring security, JWT를 이용한 인증 기능 추가 기존에 간단하게 Request Body에 서버에서 각각 AES256, SHA256 알고리즘을 이용해 자동생성해준 유저별 아이디와 패스워드만으로 간단하게 로그인 기능을 구현해 두었었는데, 프로젝트 진행 과정에서 여러 기능들이 추가되고 대부분의 기능이 유저 정보를 거쳐서 비즈니스 로직을 수행해야 했기 때문에 애플리케이션이 더 커지기 전에 Spring Security를 적용해 인증 기능을 구현하기로 했다. 간단하게 이해한 내용. 인증 기능은 크게 비교적 전통적인 방식인 세션/쿠키 방식과 최근 개발되는 서비스들에서 많이 이용되는 토큰 방식으로 나뉘는데, 세션/쿠키 방식은 유저 정보를 클라이언트로부터 받아 고유한 아이디를 부여해 세션 저장소에 따로 관리하고 이후로부터 클라이언트는 요청에 쿠키를 추가해 인증을 요청..
[JPA] 일대일 연관관계 Json 파싱 문제 해결 현재 진행중인 프로젝트에서 유저 테이블에 프로필카드 관련된 모든 칼럼을 집어 넣어도 되지만 이후에 기능 추가나 서비스 종목 확장시에 유저 테이블을 수정하는데 어려움이 많을 것 같아 개발 초기 단계부터 테이블을 서로 분리해 일대일 연관관계로 매핑해두었다. 개발중 매칭 알고리즘을 적용해 프로필 카드의 리스트를 객체에 담아 리턴해주어야 하는 API를 개발해야 했는데 JPA가 일대일 매핑을 해두었던 유저 테이블의 인스턴스까지 모두 긁어 JSON파일로 묶으려해 발생한 에러이다 클라이언트로 유저 데이터는 공개하지않고 프로필카드의 데이터만 제공하는 방식으로 서비스를 개발하려 했기 때문에 일대일 연관관계의 주인 클래스로 가서 다음과 같이 @JsonIgnore 어노테이션을 적용해주니 에러가 해결되었다. 삽질의 과정 1...
[JPA] MariaDB 연동 진행중인 ego 프로젝트의 DB는 MariaDB를 이용해 구성한다. MariaDB : MariaDB는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따른다. 오라클 소유의 현재 불확실한 MySQL의 라이선스 상태에 반발하여 만들어졌으며, 배포자는 몬티 프로그램 AB(Monty Program AB)와 저작권을 공유해야 한다.[1] 이것은 MySQL과 높은 호환성을 유지하기 위함이며, MySQL API와 명령에 정확히 매칭하여, 라이브러리 바이너리와 상응함을 제공하여 교체 가능성을 높이고자 함이다.[2] 마리아 DB에는 새로운 저장 엔진인 아리아(Aria)뿐만 아니라, InnoDB를 교체할 수 있는 XtraDB 저장 엔진..
[Linux] CentOS 7 jar 백그라운드 배포 쉘 Swagger를 이용해 API Doc 셋팅을 마쳐서 프론트엔드 개발자에게 보여주어야 했기에 애플리케이션 개발을 진행하고 있는 노트북이 아닌 서버에 빌드된 jar 파일을 배포해야 했다. 최종적으로는 셋팅을 통해 외부 WAS에 배포를 할테지만 개발 단계에서는 배포 테스트를 위해 Spring Boot 내장 톰캣을 이용해 배포를 하려한다. jar 파일은 java 명령어를 이용해 Spring Boot 웹 애플리케이션을 실행하며 그냥 실행하게 되면 해당 프로세스를 점유하는 계정이 로그아웃 되면 프로세스도 같이 죽어버리기 때문에 nohup 명령어와 & 옵션을 통해 백그라운드에서 실행하며 process owner가 로그아웃 하더라도 데몬처럼 돌아가도록 해주어야 한다. 그 이전에 서버 서비스에 등록해두었던 톰캣을 종료하..
[SpringBoot] Swagger 적용 이번 프로젝트는 백엔드를 내가 맡고 프론트엔드는 다른 친구가 개발하는 프로젝트이기에 API 문서 정리가 필요했다. 그 외에도 프로젝트 목표 달성 이후에도 계속 이어지는 서비스를 개발하고자 했기 때문에 이후에 내가 팀을 나오게 되더라도 후임 개발자가 서비스의 유지보수 및 추가기능 개발을 하는데 있어서도 도움을 주고자 Swagger를 이용해 프로젝트 초기부터 API 문서를 정리하기로 했다. Swagger - 스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원..
[SpringBoot] Spring Initializr Spring Boot를 이용해 현재 진행중인 프로젝트의 백엔드 애플리케이션을 구현하려고 한다. 먼저 Spring Initializr를 이용해 프로젝트를 셋팅하자. 다음 사이트에서 셋팅을 진행한다. https://start.spring.io/ Project는 Maven과 Gradle 중 하나를 선택할 수 있는데, 둘 다 프로젝트에 필요한 의존성 라이브러리를 자동으로 땡겨와 주는 빌드 도구이다. 추후 공부가 필요할 것 같다. 프로젝트를 진행하며 인프런에서 김영한님의 강의를 수강하며 진행하고 있으므로 Gradle Project를 선택한다. 현재 Maven 프로젝트들도 Gradle로 migration되고 있는 것들이 많다고 한다. Language는 Java Spring Boot 버전은 안정화 버전중 가장 최신 ..
CentOS 7으로 구축하는 웹 서버 - 1. 부팅 USB 만들기 + 설치 앞으로 진행하는 프로젝트들을 배포단계까지 실습을 해보고자 서버용 컴퓨터를 중고로 한 대 마련했다. 실무에서 서버용 OS로 레드햇 계열인 CentOS를 많이 사용한다는 글들을 많이 봐서 CentOS 8으로 구축을 시작했는데 Perl 관련 모듈에서 계속 에러가 나는 탓에 5일정도 삽질하다가 결국 CentOS 7으로 다시 시작해 웹 프로젝트를 구동할 수 있는 단계까지 구축을 성공했다. 추후에 다시 웹 서버를 구축할 일이 있을 때를 대비해 기록용 포스팅을 시작한다. 1. 부팅 USB 만들기 http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1908.iso CentOS Mirrors List isoredirect.centos.org 위 ..