예전에는 서비스를 운영하다 보면 직원들에게 알림(장애, 배치, 반영 등)을 알려주기 위해 메시지를 보내거나 하였지만, 최근에는 대부분 슬랙(Slack)이란 메신저를 사용한다. 대부분의 회사가 초기에 구축을 해두어, 업무시에는 간단한 양식을 추가하여 사용하고 있는데, 실제 구축하여 연동을 해보고자 하였다. 이번 글에서는 백엔드를 스프링부트로 하여 간단하게 슬랙을 연동해보도록 하겠다. 1. Slack Bot 생성하기 - 기본적으로 Slack에는 가입되어 있다고 가정하고 진행합니다. - 아래 사이트를 통해서 메시지를 보낼 Slack Bot을 생성합니다. - https://api.slack.com/ Slack은 미래의 업무가 이루어지는 곳입니다 Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠..
개발을 하던 도중에 종종 문자열 유효성 검증(ex: Null 검증)이 필요할 때가 있다. 해당 상황에서 사용하는 메소드를 살펴보고자 한다. 1. String.isEmpty() - Java에서 제공하는 String 클래스의 isEmpty()메소드가 있다. - 해당 메소드로 문자열 유효성 검사를 진행이 가능하다. - 그러나, 해당 메소드로는 Null 체크가 안되어, 로직에서 String이 null 일 경우에는 NullPointerException(NPE)이 발생한다. - 아래 이미지에서와 같이 length로 길이는 체크하지만 null은 체크하지 않는다. 2. (deprecated)StringUtils.isEmpty() - 스프링에서 제공하는 Util 클래스 중 StringUtils 클래스에도 isEmpty(..
프로젝트 개발 도중에 싱글톤 패턴을 사용하여, DB에서 데이터를 불러와 저장 후에 사용하고자 하였다. 그러나, 스프링 객체생성주기로 인해 싱글톤으로 생성한 인스턴스에서 DB 접근이 어려웠고, 공부하여 해결을 하고 싶었지만, 시간이 부족하여 유사한 방법으로 해결하고자 하였다. Spring에서 제공하는 @Component 어노테이션을 사용하여 유사하게 구현해보았다. 1. @Component 어노테이션 - @Component 어노테이션을 붙인 클래스를 spring에서 스캔할 수 있도록 설정이 필요하다. ..... - 태그의 base-package에 스캔하고자 하는 패키지 경로를 설정한다. (해당 글에서는 예제를 위해 test 아래 모든 경로로 선언하였다.) - 패키지가 여러개일 경우 위 태그를 여러개 작성하여..
웹 서비스를 개발하면서 404, 500 에러 등 많은 에러가 발생하고 각각의 에러에 맞는 화면을 보게 됩니다. 해당 글에서는 에러가 발생하면 해당 에러에 맞는 에러 페이지를 보여주도록 설정해보도록 하겠습니다. 개발환경은 아래와 같습니다. SpringBoot : 2.4.4 Java8 thymeleaf SpringBoot에서 간단하게 에러페이지를 설정해보도록 하겠습니다. 1. 에러페이지를 관리할 Controller를 생성하여 ErrorController 인터페이스를 상속받아 에러 컨트롤러를 생성합니다. 2. error 페이지를 만듭니다. 1. 에러컨트롤러 생성(CustomErrorController) - 기본적으로 Spring Boot는 모든 Error를 적적한 방식으로 처리하는 /error 로 맵핑을 제공..
해당 내용에 추가하여 새롭게 글을 작성하였습니다. 부족한 부분은 여기 를 통해 확인 부탁드립니다~ [Vue.js] Vue + SpringBoot + Mysql 를 이용한 Todo 구현(1) - 프로젝트 구성하기 블로그를 하면서 여러 개의 글을 작성하였는데, 그중에서도 vue.js 와 springboot 연동하는 글이 제일 많이 봐주셨다. 매번 다른 글도 작성하면서 간단하게 db까지 연동하는 글을 작성하고자 하였지 dev-jwblog.tistory.com 대부분 프론트엔트 프레임워크(vue.js, react.js 등)을 사용할 때에는 백엔드 구성을 Node.js를 사용합니다. 하지만, SpringBoot로도 백엔드를 구성하여 사용을 해보고자 하여 한번 적용해보기로 하였습니다. 해당 글에서는 SpringBo..
이전 글에서 운영환경까지 설정하며, 최종적인 서비스 구성은 끝이 났습니다. 그러나, 해당 서비스를 접속하기 위해선 ip를 알아야만 접속할 수 있습니다. DNS(Domain Name Service)을 사용하여 우리가 아는 이름을 통해 접속할 수 있도록 하겠습니다. 1. AWS Route 53를 통한 도메인 구매하기 - 많은 호스팅을 제공해주는 사이트가 있지만, 해당 글에서는 AWS Route 53을 사용하여 도메인을 구매(유료)하여 호스팅 될 수 있도록 하겠습니다. - AWS에서 Route 53을 검색합니다. - 도메인 등록 에 사용하고자 하는 도메인을 입력 후 확인 버튼을 클릭합니다. - 먼저 입력한 도메인이 사용 가능하다면, 가격과 함께 표시되어 집니다. - 1년에 약 12달러로, 한달에 1달러로 Do..
해당 글은 전 '우아한형제들' 현 '인프런'의 개발자이신 jojoldu님의 블로그와 책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다. 이전 글에서 서비스가 죽지 않고 배포가 가능한 무중단 배포를 구축하였습니다. 그러나, 아직까지 이전에 생성한 RDS DB를 연결하지 않았습니다. 이번 글에서는 AWS RDS DB를 연결하여, 운영 환경을 최종적으로 설정하도록 하겠습니다. 1. AWS RDS DB 접근하기 - 이전 글에서 운영 YAML (real-application.yml)을 EC2 서버에 생성하였습니다. - 운영 DB(AWS RDS)도 해당 파일에 추가하여 사용 가능하도록 하겠습니다. - 그렇지만, 해당 파일에는 현재 set1, set2 설정에 같은 내용을 반복하여 추가해야 ..
해당 글은 전 '우아한형제들' 현 '인프런'의 개발자이신 jojoldu님의 블로그와 책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다. 이전 글에서 TravisCI & AWS CodeDeploy로 배포 자동화 구축하였습니다. 배포 자동화는 되었지만, 새로 배포하는 시간동안에는 서비스를 이용할 수 없습니다.(서버가 내려가있기 때문) 매번 배포 때마다, 서비스가 죽어 있을 순 없기 때문에, 서비스가 죽지 않고 배포가 가능한 무중단 배포를 구축하도록 하겠습니다. 1. 무중단 배포 - 서비스를 중지하지 않고, 배포를 계속하는 것을 무중단 배포라고 합니다. 무중단 배포 방식들 AWS의 Blue-Green 무중단 배포 도커를 이용한 무중단 배포 L4 스위치를 이용한 무중단 배포 Nginx..
해당 글은 전'우아한 형제들' 현'인프런'의 개발자이신 jojoldu님의 블로그와 책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다. 이전 글에서 AWS EC2에 개발한 프로젝트를 배포하였습니다. 이번 글에서는 해당 개발을 하고 Git에 Push를 하면 자동으로 EC2에 배포가 되도록 자동화를 구축해보도록 하겠습니다. 1. Travis CI 연동하기 - Travis CI는 Github에서 제공하는 무료 CI 서비스 입니다. CI(지속적 통합)란??? 코드 버전 관리를 하는 Git에 PUSH가 되면 자동으로 Test, Build가 수행되고 Build 결과를 운영 서버에 배포까지 자동으로 진행되는 과정 해당 글에서는 Travis CI를 사용하지만 추후에는, Github Action..
해당 글은 전'우아한 형제들' 현'인프런'의 개발자이신 jojoldu님의 블로그와 책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다. 이전 글에서 서비스를 구현하기 위해 서버와 DB를 구성하였습니다. 이번 글에서는 개발한 프로젝트를 해당 서버(EC2)에 배포해보도록 하겠습니다. 1. EC2에 Java 및 Git 설치 - 현재 서버(EC2)에는 아무런 설치가 되어 있지 않은 빈 서버입니다. - 그렇기 때문에, 서버에 우리가 사용하는 프로그램(Java, Git 등)을 설치해야 합니다. Java - 현재 프로젝트를 Java8로 개발하고 있기 때문에 서버에도 Java8을 설치 하도록 하겠습니다. - EC2에 접속하여 아래의 명령어를 통해 Java를 설치합니다. EC2 접속 : Mac에..