All
54 posts
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.5 세션동작방식으로 로그인처리)

🎈 세션 동작 방식으로 로그인 처리하기! 지난 시간에는 쿠키로 처리할때 나타나는 치명적인 단점을 살펴보았고, 해결 방안에 대해 알아보았다 이어 해결 방안을 구현해 어플리케이션의 보안 문제를 해결 해 보자! 목표 앞서 쿠키에 중요한 정보를 보관하는 방법에는 여러가지의 보안 이슈가 발생했었다. 이 문제를 해결하려면 결국 중요한 정보를 모두 서버에 저장 해야 한다. 그리고 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결 해야 한다. 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션 이라 한다. 세션 동작 방식 세션을 어떻게 개발할지 먼저 개념을 이해해보자. 로그인 사용자가 , 정보를 전달하면, 서버에서 해당 사용자가 맞는지 확인을 한다. 세션 생성 세션 ID를 생성하는데, 추정 불가능 해야하는 값이여야만 한다. 그래서 사용하는것이 ****이다. 해당객체는 절대 겹치지 않는 임의의 값을 만들어주는 객체로, 쿠키에 해당옵션을 주기에 아주 적당하다. ex) …

December 07, 2023
SpringBoot
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.4 세션 쿠키 활용)

🎈 로그인 성공 시 세션 쿠키 생성 지난 시간에 이어 로그인에 필요한 세션 쿠키를 생성해 보도록 하자. 여기서 우리가 집중하여 볼것은 쿠키 생성 로직이다. 쿠키 생성 로직 로그인에 성공시 쿠키를 생성하고 에 담는다. 쿠키의 이름은 이고, 값은 회원의 를 담아둔다. 웹 브라우저는 종료 전까지 회원의 값(id)를 서버에 지속적으로 보내줄것이다. 실행 크롬 브라우저를 통해 HTTP 응답 헤더에 쿠키가 추가된 것을 확인할 수 있다. 🌵 홈화면 로그인처리 HomeController 기존 메소드의 있는 어노테이션은 꼭 주석처리를 하자. 를 사용하면 편리하게 쿠키를 조회 할 수 있다. 로그인 하지 않은 사용자도 홈에 접근할 수 있기 때문에 로 해주어야 한다. 로직 분석 로그인 쿠키(memberId)가 없는 사용자는 home()으로 보내며, 추가로 로그인 쿠키가 있어도 회원이 없다면, home으로 보낸다. 로그인 쿠키(memberId)가 있는 사용자는 로그인 사용자 전용 홈 화면인 으로 보낸다…

December 07, 2023
SpringBoot
/static/aab7211514b9b25883f182daf61b4866/thymeleaf.png
Thymeleaf-Basic(part.5 타임리프의 연산)

🎈 연산 타임리프에서의 연산은 자바와 크게 다르지 않다. 다만 HTML안에서 사용되기 때문에 ****를 사용하는 부분에서만 주의하면 된다. BasicController에 추가 operation.html 비교 연산 : HTML 엔티티를 사용해야 하는 부분을 정말 주의해야한다. 참고로 필자는 초반에 이러한 문제로 상당히 난항을 겪었다…ㅋㅋ 타임리프에 익숙치 않은 사용자라면 유의해야겠다. =gt , =lt , =ge , =le , =not , =eq , =neq,ne 조건식 : 자바의 조건식과 유사하다. ****처럼 삼항연산이 가능하다.(강력한 기능이다. 사용 할 일이 많아질듯 하다.) Elvis연산 : 조건식의 편의성을 업그레이드한 느낌이다. No-Operation : 언더바로 마치 타임리프가 작동하지 않는 것 처럼 동작하게 한다. 이것을 잘 활용하면 HTML태그에 내용을 그대로 활용 할 수 있다. 그래서 마지막의 예를 보면 의 부분이 그대로 출력 되는 것을 볼 수 있다! 🐠 속성 값…

December 07, 2023
Thymeleaf
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.3 로그인 기능 개발)

🎈 로그인 기능 이전에 만들었던 코드를 베이스로 하여 로그인 기능을 개발 해 보겠다. 우선은 로그인 ID, 비밀번호를 입력하는 부분에 집중해보자! (추후에 쿠키와 세션을 사용하여 단점을 하나씩 잡아가는 방식으로 진행하겠다.) 요구사항을 한번 더 확인하고 기능구현에 들어가보자. 위의 코드를 살펴보면 로그인의 핵심 비즈니스 로직은 회원을 조회한 다음에 파라미터로 넘어온 와 비교해서 같으면 회원을 반환하고 만약 다르다면, 을 리턴시킨다. 의 기능을 사용하여 비밀번호를 비교하였다. MemberRepository의 메소드를 확인해보면, 와 같이객체에 맴버를 감싸 반환한다. 이 Optional객체는 이러한 필터기능을 제공한다(자바8이상) ===== 🌵 LoginForm & Controller / View LoginForm LoginController.java 로그인 컨트롤러는 로그인 서비스를 호출하여 로그인에 성공하면, 홈 화면으로 이동시키고, 로그인에 실패하면 를 사용하여 글로벌 오류를 …

December 07, 2023
SpringBoot
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.2 홈화면 개발)

🎈 Start SpringBoot project 이클립스(혹은 sts4)를 쓰고있다면 new project -> Spring Starter Project로 생성! intellij를 사용한다면 start.spring.io에서 프로젝트를 생성하자. 의존성 추가는 lombok과 spring Web, thymeleaf, validation을 추가해주고 임포트 혹은 다운을 받아 프로젝트를 실행! build.gradle에 의존성 추가가 되었는지 확인! ===== 🌵 홈 화면 개발 HomeController home.html 회원 가입 위의 컨트롤러 코드에서 를 로 변경해도 결과는 같다. 본인은 대상을 직접 지정함 ===== 회원 가입 뷰 템플릿(html) 실행 결과를 로그로 확인 회원용 테스트 데이터 추가하기! test편의를 위해 회원의 데이터를 임의로 추가해보겠다. to be continue…(로그인 기능 개발)

December 06, 2023
SpringBoot
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.1 요구사항 및 화면정의)

🎈 이번 편에서는.. 해당편에서는 스프링부트에서 제공하는 기능들을 활용하여 로그인 처리를 목적으로 할것이다. 차례대로 업그레이드 하면서 진행 할 예정이며, 이론적인 설명위주 보다는 예제 코드를 통해 로그인 처리를 어떻게 하는지에 대한 본질적인 접근으로 들어가도록 하겠다. ===== 🌵 회원 로그인 요구사항 정의 홈화면 (로그인 전) 회원 가입 로그인 홈화면 (로그인 이후) 로그인 한 회원의 이름(oo님 환영합니다)이 보이기 상품 관리 버튼 로그아웃 버튼 보안 요구사항 로그인 사용자만 상품에 접근하며, 아이템관리가 가능하다. 만약 로그인하지 않은 사용자가접근시 로그인 화면으로 이동 회원 가입, 상품 관리 🌚 화면 정의서 홈화면 (로그인 전) 홈화면 (로그인 후) 회원가입 로그인 상품관리 🌂 패키지 구조 com.xxxxx.xxx domain item member login web item member login 도메인 : 화면,UI,기술 인프라 등등의 영역은 제외한 시스템…

December 06, 2023
SpringBoot
/static/aab7211514b9b25883f182daf61b4866/thymeleaf.png
Thymeleaf-Basic(part.4 유틸객체와 사용법)

🎈 자바 8에서 제공되는 날짜객체들 타임리프에서는 자바8버전부터 제공되는 날짜객체인 를 사용하려면 추가 라이브러리가 필요하지만, 스프링 부트에서 타임리프를 사용한다면, 해당 라이브러리가 자동으로 추가되며 통합된다. 저번시간에 소개된 유틸리티 객체들에 사용방법에 대해 알아보도록 하자! 타임리프 자바8 날짜 지원 라이브러리 이 해결해주는데, 이와같이 자바8의 날짜용 유틸리티 객체들의 사용예시를 한번 보도록하자. 🐠 URL 링크 사용법 타임리프에서는 URL을 생성하거나 요청을 보낼때 사용하는 문법이 있다. 아래에는 문법의 예시를 통해 자세한 사용 방법을 알아보도록 하자! 단순한 URL? 라고 입력을하면, 요청url이 /hello로 전달이 되고, 해당 매핑이 되어있는 컨트롤러의 메소드를 호출하게된다. 쿼리 파라미터? 라고 입력을 하게되면 다음과 같은 url이 전달되게 된다.와 같이 된다. 괄호()안의 내용이 쿼리파라미터로 처리되어 나가는 것을 볼 수 있다. 위의 내용처럼 요청 url…

December 06, 2023
Thymeleaf
/static/aab7211514b9b25883f182daf61b4866/thymeleaf.png
Thymeleaf-Basic(part.3 SpringEL의 변수와 지역변수 + 객체들)

🎈 Spring에서 제공하는 SpringEL문법 이전 파트에서는 타임리프에 대한 기본 표현식과 변수 표현식들을 알아 보았다. 이번 시간에는 변수 표현식에 스프링El이라는 스프링이 제공하는 표현식을 사용해 보도록 하자. 🐠 SpringEl의 다양한 표현식 사용 Object 가 된다. 즉, 컨트롤러에서 모델객체에 addAttribute에 키값으로 userA라는 객체의 정보가 담아주었다. 이것을 자바에서는 user.getUsername();이런식으로 꺼내쓸수 있는것과 같은 방법이다. 또한, 위의 내용을 이렇게도 표현 할 수 있다. 위의 사용방법이 조금 어색하다면 이렇게도 직접 호출 할 수 있는데, 이 방법은 추천하지 않는다. List List(즉, 컬렉션객체)는 인덱스값(0)을 직접 줌으로써 해당 객체의 프로퍼티를 불러 올 수 있다. 위의 내용을 풀어보면 이 되는것이다. List 역시 다양한 방법으로 호출이 가능하다 Map 맵객체도 여러가지의 방법으로 호출,사용이 가능하다. 은 …

December 05, 2023
Thymeleaf
/static/aab7211514b9b25883f182daf61b4866/thymeleaf.png
Thymeleaf-Basic(part.2 타임리프! text? utext??)

🎈 텍스트 타임리프의 가장 기본 기능인 텍스트를 출력하는 기능을 알아보도록 하겠다. 타임리프는 기본적으로 HTML 태그 속성에 기능을 정의하여 동작한다. HTML의 콘텐츠에 데이터를 출력할 때는 다음과 같이 를 사용하면 된다. ex) 과 같이 사용 할 수 있다. HTML 태그의 속성이 아니라 콘텐츠 영역 안에서 직접 데이터를 출력하고 싶다면, 다음과 같이 표현 할 수있다. 다음은 예제를 통하여 좀 더 자세히 알아보도록 하자. 🐠 Controller 🍕 HTML 🍔 실행 실행 결과를 보면 의 값이 모델에 담겨 ‘Hello Spring!’을 출력하는것을 볼 수 있다. 태그 안에서 그리고 태그 밖에서 직접 데이터를 출력할때 역시 정상적으로 출력이 되는 것을 알 수 있는 부분이다. Escape HTML문서는 와 같은 특수 문자를 기반으로 정의가 된다. 따라서 뷰 템플릿으로 HTML 화면을 생성 할 때에는 출력하는 데이터에 이러한 특수 문자가 있는것을 주의하여 사용해야 한다. 앞에서 만…

December 04, 2023
Thymeleaf
/static/aab7211514b9b25883f182daf61b4866/thymeleaf.png
Thymeleaf-Basic(part.1 특징과 기본 표현식)

🎈 Thymeleaf의 특징 서버 사이드 HTML 렌더링 (SSR) 네츄럴 템플릿 스프링 통합 지원 🍕 서버 사이드 HTML 렌더링 (SSR) 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. 🍔 네츄럴 템플릿 타임리프는 순수 HTML을 최대한 유지하는 특징이 있다. 타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. JSP를 포함한 다른 뷰 템플릿들은 해당 파일을 열면, 예를 들어서 JSP 파일 자체를 그대로 웹 브라우저에서 열어보면 JSP 소스코드와 HTML이 뒤죽박죽 섞여서 웹 브라우저에서 정상적인 HTML 결과를 확인할 수 없다. 오직 서버를 통해서 JSP가 렌더링 되고 HTML 응답 결과를 받아야 화면을 확인할 수 있다. 반면에 타임리프로 작성된 파일은 해당 파일을 그대로 웹 브라우저에서 열어도 정상적인 HTML …

December 03, 2023
Thymeleaf
/static/600936eff285336128986c0395579c86/reteevLogo.png
새로운 팀원과 떠나는 팀원

나를 포함한 팀원이 3명이 되고 10개월이 지날 즘 기존 팀원의 탈퇴 소식을 접했다. 이렇게 빠르게 팀원과의 헤어짐이 올지는 몰랐던 나였다 탈퇴를 결심한 팀원과 술 한 잔 기울이며 많은 얘기를 했었고 팀을 탈퇴하는 게 아닌 IT업계를 떠나려는 새로운 꿈을 찾아 떠나려는 팀원을 내가 붙잡고 막을 수는 없다는 생각을 했다. 그 친구의 이유는 간단했다 더 이상 일이 즐겁지 않고 번아웃이 온 거 같았다 누구나 일을 하면서 번아웃도 오고 해야 할 이유와 방향성을 잃을 때가 온다고 생각한다. 나 또한 그런 적이 있었기에 누구보다 잘 이해하고 알 수 있었다. 그럼에도 멈추지말고 계속 나아가야 하는 걸 너무나도 잘 알고 있는 나였기에 그 친구의 입에서 포기라는 단어를 들었을 때 너무나도 안타까웠다. 그 친구가 일을 시작할 때 포부와 절실함을 누구보다 옆에서 잘 봤던 나였기에 아쉬움이 너무나도 컸다. 1. 새로운 팀원의 합류 떠날 사람은 떠나고 올 사람은 오듯이 한 명이 떠나고 새로운 팀원이 합류…

November 22, 2023
Reteev
/static/3189e9c0404650ccc6c5ffc998bc8717/java.png
쿠키 / 세션이란? (part.1 )

🎈 Cookie란 무엇인가요? 쿠키는 웹 서버가 생성하여 웹 브라우저로 전송하는 작은 정보 파일입니다. 웹 브라우저는 수신한 쿠키를 미리 정해진 기간 동안 또는 웹 사이트에서의 사용자 세션 기간 동안 저장합니다. 웹 브라우저는 향후 사용자가 웹 서버에 요청할 때 관련 쿠키를 첨부합니다. 쿠키는 웹 사이트에 사용자에 대한 정보를 제공하여 웹 사이트가 사용자 경험을 맞춤화하는 데 도움이 됩니다. 예를 들어, 전자상거래 웹 사이트에서는 쿠키를 사용하여 사용자가 장바구니에 어떤 상품을 담았는지 파악합니다. 또한 인증 쿠키(아래 참조)와 같이 보안을 위해 필요한 쿠키도 있습니다. 인터넷에서 사용되는 쿠키를 “HTTP 쿠키”라고도 합니다.대부분의 웹과 마찬가지로 쿠키는 HTTP 프로토콜을 사용하여 전송됩니다. 쿠키는 유저들의 효율적이고 안전한 웹 사용을 보장하기 위하여 웹사이트에 널리 사용되고 있습니다. 쿠키는 웹사이트 접속시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 작은 텍스트…

November 17, 2023
JAVA
/static/c7929e2b2265dcb571f443e5cc8e6170/nvm.webp
nvm 설치 (Window)

개요 프로젝트를 import 받고 실행시키는데 npm 에러가 계속 나를 못살게 굴었다. 그래서 필자는 어떤 에러인지 확인을 하고 패키지 버전에 문제가 있다는 것을 알았다. 버전끼리 호환이 안되는 경우도 있다고 들어서 버전을 자유롭게 바꿀 수 있는 것이 “nvm”이였다. 이를 통해 문제를 해결하였고 이제 어떤 프로젝트던 버전을 맞추어 편리하게 사용할 수 있게 되었다. 이제 설치하는 방법에 대해서 알아보자. ▶️ nvm 설치하기 🎆nvm 설치경로 클릭 📌NVM 설치 및 설치확인 위의 링크를 클릭하여 nvm-setup.zip 파일을 다운로드한다. 다운로드를 받고, 압축을 해제하면 해당 경로 폴더에 nvm-setup.exe 파일이 나온다. 설치가 완료되면 Window Powershell 을 실행시켜 아래와 같은 명령어를 입력한다. 해당 결과가 아래와 같이 출력되면 성공이다. ※ 참고로 Windows PowerShell 은 관리자 권한으로 실행시켜주자. 📌 NVM 사용하기 N…

November 15, 2023
NVM
/static/600936eff285336128986c0395579c86/reteevLogo.png
팀원과의 만남

프리랜서로 활동하며 많은 개발자들을 만나며 프로젝트를 진행하다 문득 누군가가 원하는 걸 만들어주는 생활을 언제까지 만들어야 할까라는 생각이 들었다. 나는 개발자로써 내가 원하는 근무환경 내가 원하는 사람들과는 내가 만들고 싶은 걸 만들 수 없는 걸까? 라는 생각이 강해질 무렵 개발팀을 만들어야겠다는 생각이 들었고 생각을 바로 실행에 옮기기 시작했다. 이번 포스트에서는 내가 re:teev를 만들게 된 계기와 첫 팀원과의 만남에 대해 기술할 예정이며 앞으로도 생길 팀원과 개발팀 리티브의 소소한 얘기들을 포스팅할 예정이다. 1. 사업자로의 도약 개발 팀을 만들기 전에 더 이상 프리랜서의 신분으로는 울타리를 만들 수 없다고 생각했고 바로 사업자를 냈다. 두려움도 있었지만 아직은 혼자였던 터라 겁도 없이 사업자를 시작하고 모든 프로젝트를 사업자 계약으로 진행하기 시작했다. 단순히 팀으로서의 활동이 아닌 우리 팀이 회사가 되는 과정까지 생각했을 땐 사업자가 유리하다고 생각했다. 2. 동료 구…

June 01, 2023
Reteev
/static/4c7d3cc3b0d1c53e66381163de17e318/efs.png
AWS Elastic File System(EFS) 마운트

🎈 EFS 실습 AWS EFS를 생성하여 EC2에 마운트하여 파일이 공유되는지 확인해 보자. 🎆 EFS 생성하기 EFS 콘솔 접속 -> 파일 시스템 생성 클릭 이름 : my-efs 마운트할 EC2 인스턴스와 같은 VPC 선택 나는 이전에 ec2 인스턴스를 2개 생성해 놨다. efs2.PNG my-efs 클릭하여 세부 정보 보기 생성된 efs 의 전용 보안그룹이 필요하다. 새로운 보안 그룹을 생성해준다. efs3.PNG efs4.PNG vpc는 나의 ec2와 같은 vpc로 잡아주면 된다 다시 내가 생성한 efs 파일시스템 세부정보 보기를 클릭후 네트워크 탭에서 관리 버튼 글릭후 보안 그룹을 내가 생성한 그룹으로 바꿔준다. efs5.PNG efs6.PNG 🎇 EFS 파일 시스템 - 마운트 방법(재부팅 하면 마운트 해제됨) 생성한 파일 시스템을 선택한 후에 efs2.PNG 연결 버튼을 클릭한다. efs7.PNG 연결 버튼을 누르면 인스턴스에 탑재하는 명령어가 나온다. 나의 경우에는 EF…

March 28, 2022
AWS
/static/4c7d3cc3b0d1c53e66381163de17e318/efs.png
AWS Elastic File System(EFS) 란?

🎈 AWS Elastic File System 란? AWS EFS는 파일 방식으로 데이터를 저장하는 AWS의 대표 fully-managed file storage 서비스이다. 파일 스토리지는 일반적으로 OS에서 이용되는 파일 시스템에 사용되는 비교적 친숙한 방식의 스토리지이다. AWS EFS가 갖는 주요 특징들을 알아보자. EFS 의 특징 파일 스토리지는 block 혹은 object 방식의 스토리지와 달리, 폴더와 파일로 구성된 계층적 구조를 갖는다. AWS EFS는 SAN 방식으로 구현된 AWS EBS와 다르게, NFS(Network File System)를 기반으로 여러 EC2 인스턴스가 동일한 파일 시스템을 공유할 수 있다. AWS EFS는 기본적으로 수 천 여개의 concurrent NFS connection을 지원한다. Elastic 이라는 이름처럼, AWS EFS는 파일이 추가/삭제됨에 따라 스토리지의 용량이 탄력적으로 증가/감소하게 된다. 이러한 특징은 적절한 용량과 …

March 25, 2022
AWS
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
AWS SQS + SPRING BOOT 사용법

👀 개요 이전 포스팅에서 SQS에 대해서 간단하게 다뤘었다. 요번에는 SQS를 SPRING BOOT 에서 사용하는 방법을 실습해 보겠다. ❗ SQS에 대해서는 이전 포스팅 참고 SQS란? 🦺 SQS 대기열 생성 큐 수신,송신에 대해서는 이전 포스팅 참고 SQS 사용법 📖 실습 💼 대기열 생성 일단 나는 아래 그림처럼 SQS 대기열을 생성했다. sqs.PNG 해당 대기열 클릭하여 들어가면 세부정보의 url을 확인 할수있다. 나중에 사용하기 위해 기억해두자 sqs1.PNG 🖋 필수 설정하기 의존성 추가 프로젝트 구조 application.yml application.yml 에 aws 관련 정보를 기재해 준다. 🖊 SQS Configuration 클래스 생성 application.yml에 있는 access-key, secret-key 값을 가지고 AWSCredentialsProvider 빈 생성 Message 송신에 사용되는 AmazonSQS 빈 생성 시 해당 credentials 정보…

March 24, 2022
SpringBoot
/static/6aac43b0807c1b8be8cd9d3a51343804/SQS.png
Amazon Simple Queue(SQS) 생성

🎈 Amazon SQS 시작하기 이 섹션에서는 Amazon SQS를 익숙하게 사용할 수 있도록 Amazon SQS 콘솔을 사용하여 대기열과 메시지를 관리하는 방법을 설명합니다. 🍕 1단계: 대기열 생성 가장 먼저 이루어지고 가장 흔한 Amazon SQS 태스크는 대기열을 생성하는 것입니다. 이 절차는 FIFO 대기열을 생성 및 구성하는 방법을 보여줍니다. 에서 Amazon SQS 콘솔을 엽니다. https://console.aws.amazon.com/sqs/ 대기열 생성을 선택합니다. sqs1.PNG 이표준대기열 유형이 기본적으로 선택됩니다. 선택FIFO. 대기열을 생성한 후에는 대기열 유형을 변경할 수 없습니다. 대기열을 입력합니다. FIFO 대기열의 이름은 로 끝나야 합니다..fifo접미사. sqs2.PNG 나머지 기본설정 그대로 나두고 대기열 생성 클릭 🍔 2단계: 메시지 전송 대기열을 생성한 후 그 대기열에 메시지를 보낼 수 있습니다. 왼쪽 탐색 창에서Queues. 대기열 …

March 24, 2022
AWS
/static/6aac43b0807c1b8be8cd9d3a51343804/SQS.png
Amazon Simple Queue(SQS) 란?

🎈 Amazon Simple Queue 서비스란 무엇입니까 🍕 Amazon SQS 사용의 이점 보안–제어Amazon SQS 대기열로 메시지를 전송하고 이 대기열로부터의 메시지를 수신할 수 있는 사람 서버 측 암호화 (SSE)는 에서 관리되는 키를 사용하여 대기열의 메시지 내용을 보호함으로써 민감한 데이터를 전송할 수 있습니다.AWS Key Management Service(AWS KMS). 내구성— 메시지 안전을 위해 Amazon SQS 는 메시지를 여러 서버에 저장합니다. 표준 대기열 지원최소 1회의 메시지 전송및 FIFO 대기열 지원정확히 한 번 메시지 처리. 가용성— Amazon SQS 사용중복 인프라는 메시지에 대한 고도의 동시 액세스와 메시지 생성 및 소비에 대한 고가용성을 제공합니다. 확장성— Amazon SQS 각각 처리할 수 있습니다.요청 버퍼링독립적으로 투명하게 확장하여 프로비저닝 지침 없이도 로드 증가 또는 급증을 처리합니다. 안정성— Amazon SQS 는 처…

March 24, 2022
AWS
/static/6e89badcda37d6c6939da19bb58ddbaa/opensearch.png
OpenSearch 검색 애플리케이션 생성

✅ 개요 AWS 의 OpenSearch를 사용하여 간단한 Serverless 검색 애플리케이션을 생성해보자 Amazon API Gateway로 사용자를 OpenSearch API 및 AWS Lambda의 하위 집합으로 제한하여 API Gateway에서 OpenSearch Service로 보내는 요청에 서명하도록 구현 하겠다. Aws OpenSearch(Elasticsearch) 관련 포스팅은 여기를 참고하자 🧀 1단계: 샘플 데이터 인덱싱 사전 조건은 OpenSearch Service 도메인입니다. 이전 포스팅을 참고하여 도메인은 만들어져 있다는 가정하에 진행 합니다. sample-movies.zip을 다운로드하여 압축을 해제하고 _bulk API를 사용해 5,000개 문서를 movies 인덱스에 추가합니다. estuto1.PNG 🥨 2단계: API Gateway에서 API 생성 API Gateway를 사용하면 보다 제한된 API를 생성하고 OpenSearch _search API…

March 22, 2022
AWS
/static/02527faa21e636f66be5b525ff91fc94/lambda.jpg
Lambda Layers 사용하기

🎈 Lambda Layers의 핵심? “Lambda에 코드 만들어 올릴 때 매번 패키지(pip 패키지 등) 세트 만들어 올리는거 귀찮았지? 같은 Dependency 가지는 함수라면 코드만 따로 빼고 의존성 패키지는 Layers라는 곳으로 빼서 사용해!” 즉, 굉장히 편리해진 요소가 추가된 것이죠. 그렇다면 Layers는 어떻게 동작할까요? ✅ 람다 사용을 위해 간단한 예제를 통한 실습을 해보자. 🍕튜토리얼 Lambda Layers는 어떻게 사용하나요? 아주아주 간단하고 심플한 크롤링 코드를 Lambda에 올려 사용한다고 가정해봅시다. 해당 코드는 requests와 bs4라는 모듈을 사용합니다. 이 블로그를 긁어 h1태그 하나의 글자를 가져와봅시다. 하지만 아무런 준비 없이 AWS Lambda 콘솔에서 위 코드를 저장하고 실행하면 아래와 같은 No module named ‘requests’ 에러가 납니다. 위 에러 메시지는 requests라는 모듈을 찾을 수 없다는 파이썬 에러입니다…

March 21, 2022
AWS
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
Spring Boot + Aws OpenSearch(Elasticsearch) 연동

✅ 개요 AWS 의 OpenSearch에 접근하여 데이터를 생성해보자. Aws OpenSearch(Elasticsearch) 관련 포스팅은 여기를 참고하자 AWS OpenSearch 연동 기본 프로젝트 구조 의존성 추가 AWSRequestSigningApacheInterceptor 추가 참고 DataCheckController 포스트맨 호출 sbes1.PNG 키바나 확인 sbes2.PNG 🌭마무리 위와 같이 springboot에서 OpenSearch(Elasticsearch)에 인덱스를 생성해주었고 확인까지 할수 있었다. 다음에는 OpenSearch(Elasticsearch)를 활용한 간단한 애플리케이션을 만들어 보자. ✅ 개요 AWS OpenSearch 연동 🌭마무리

March 15, 2022
SpringBoot
/static/066bcf7d24a6d86f02fa4857d6b8421a/elasticsearch.png
AWS OpenSearch(Elasticsearch) 사용법

🎈 개요 내가 진행한 프로젝트 에서 검색 엔진으로 오픈서치를 선택하여 사용해야하는 상황이 있었다. 해당 부분은 사실 인프라에서 진행하였지만 진행중 공부한 내용들을 기재 하려한다. 이번 글에서는 간단하게 도메인 생성과 키바나접속등 기본적인 내용만 다룰 예정이다. 🚀 Amazon OpenSearch Service 시작하기 Amazon OpenSearch Service를 사용하여 테스트 도메인을 만들고 구성하는 방법을 진행해 보자 OpenSearch Service 도메인은 OpenSearch 클러스터와 동의어입니다. 도메인은 설정, 인스턴스 유형, 인스턴스 수, 스토리지 리소스를 지정한 설정입니다. 🦖 1단계: OpenSearch Service 도메인 생성 콘솔을 사용하여 OpenSearch Service 도메인을 만들려면 https://aws.amazon.com으로 이동하여 콘솔에 로그인(Sign In to the Console)을 선택합니다. 분석(Analytics)에서 Amazon…

March 14, 2022
AWS
/static/6e89badcda37d6c6939da19bb58ddbaa/opensearch.png
OpenSearch 란?

🎈 OpenSearch란 무엇입니까? OpenSearch는 배포형 오픈 소스 검색과 분석 제품군으로 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용됩니다. OpenSearch는 데이터 탐색을 쉽게 도와주는 통합 시각화 도구 OpenSearch와 함께 뛰어난 확장성을 지닌 시스템을 제공하여 대량 데이터 볼륨에 빠르게 액세스 및 응답합니다. Elasticsearch 및 Apache Solr와 마찬가지로 OpenSearch는 Apache Lucene 검색 라이브러리를 사용합니다. OpenSearch 및 OpenSearch 대시보드는 Elasticsearch 7.10.2 및 Kibana 7.10.2에서 파생되었습니다. 🚀 OpenSearch가 만들어진 이유는 무엇인가요? Elastic은 Elastic License 또는 Server Side Public License(SSPL) 하에서 사용할 수 있는 소스 코드를 사용하여 Elastic Lice…

March 14, 2022
AWS
/static/066bcf7d24a6d86f02fa4857d6b8421a/elasticsearch.png
Elasticsearch 란?

🎈 Elasticsearch는 무엇인가요? Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형 및 개방형을 특징으로 합니다. Elasticsearch는 Apache Lucene을 기반으로 구축되었으며, Elasticsearch N.V.(현재 명칭 Elastic)가 2010년에 최초로 출시했습니다. 간단한 REST API, 분산형 특징, 속도, 확장성으로 유명한 Elasticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 무료 개방형 도구 모음인 Elastic Stack의 핵심 구성 요소입니다. 보통 ELK Stack(Elasticsearch, Logstash, Kibana의 머리글자)이라고 하는 Elastic Stack에는 이제 데이터를 Elasticsearch로 전송하기 위한 경량의 다양한 데이터 수집 에이전트인 Beats가 포함되어 있습니다. 🚀 Elasticsea…

March 14, 2022
AWS
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot + naver crova ocr 사용

개요 이전 포스팅에서 naver crova ocr 에대해 다뤘었다. 참고 해당 글을 보면 이미 나는 naver ocr api를 생성했고 요번 글에서는 springboot 에서 해당 api를 사용하는 방법을 포스팅 하겠다. 📌 multipart/form-data 사용 호출 방식은 두가지로 나뉜다 하지만 나는 로컬에 저장된 이미지 파일을 사용 할꺼라서 form-data 방식으로 호출한다. 🎀 다른 방식은 해당 문서 참고 프로젝트 구조 CheckController NaverOcrApi JsonUtill : 데이터 가공을위함 필수 X Json 관련 의존성은 기재 안하겠다 본인이 가공할거면 편한걸 사용하면 된다. NaverOcrApi JsonUtill CheckController 🏆 Postman 호출 springbootocr.PNG 이렇게 내가 원하는 이미지의 텍스트를 추출 할수가 있다. 🌭마무리 생각보다 문서도 잘되어있고… 내가 굳이 따로 글을 쓸필요가 있을까 싶을정도 이지만… 그래도 …

March 08, 2022
SpringBoot
/static/a0f82183202acd21d2ad8a63d4d399c7/naverCloud.png
NAVER cloud OCR API 사용 방법

✨ 개요 내가 진행 했던 프로젝트 에서 네이버 클라우드 플렛폼에서 지원하는 OCR API를 사용하여 이미지의 텍스트를 추출하는 작업을 담당 했었고 해당 작업을 정리하기 위해 포스팅을 하려 한다. 👓 OCR? OCR(Optical character recognition, 광학 문자 인식)은 이미지(사진) 속 글자 위치를 찾고 어떤 글자인지 자동으로 알아내는 기술입니다. OCR은 다양한 형태의 글자를 이해하기 위해 독자적인 글자 영역 검출 및 인식 기술을 보유하고 있습니다. 또한 손쉽게 템플릿을 만들고 원하는 영역을 지정한 뒤, 필요한 글자만 빠르게 추출하는 기능을 제공합니다. 📷 Naver CLOVA OCR ? CLOVA OCR 서비스는 네이버의 AI 기술을 활용하여 주요 비즈니스 활용에 최적화된 고성능 OCR 인식 모델을 적용하였습니다. 문자 인식이 제공되는 언어는 한국어, 영어, 일본어이며, 필기체 인식은 한국어와 일본어가 지원됩니다. CLOVA OCR은 문서 레이아웃 분석 및 …

March 08, 2022
NAVERCLOUD
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
AWS S3 파일 업로드,다운로드

👀 개요 이전 포스팅에서 S3에 대해서 간단하게 다뤘었다. 요번에는 S3에 파일을 올리는 과정을 포스팅하려 한다. ❗ S3에 대해서는 이전 포스팅 참고 S3란? 🦺 S3 버킷 생성에 대해서는 이전 포스팅 참고 S3 버킷 생성 🗑 S3 파일 업로드 버킷 생성 일단 나는 아래 그림처럼 file-upload-test-lee라는 명칭으로 퍼블릭한 버킷을 하나 생성했다. springboots3.PNG 해당 버킷을 클릭하여 들어가면 아무런 객체도 없는 상태이다. springboots31.PNG 그리고 iam 권한에 사용자에게 S3 FullAccess 권한을 부여해야 합니다. (이것이 있어야 S3에 파일 업로드를 할 수 있습니다.) 일단 aws 상에서의 작업은 이 정도만 해주면 된다. 이제 실제 애플리케이션에서 aws s3 서비스를 구현해 보자. AmazonS3ClientBuilder 를 사용한 업로드 구현 의존성 추가 프로젝트 구조 AmazonS3Config CheckController Aw…

March 07, 2022
SpringBoot
/static/3189e9c0404650ccc6c5ffc998bc8717/java.png
Java 외부 api 호출 방법

🎋 기초(외부 API 호출) 정말 간단한 컨트롤러에서 사용하는 기본 예제이다. 🎍 마무리 컨트롤러에서 지정한 외부 api를 호출하는 예제이다. 하지만 실제로는 외부 api를 호출한 다음 다른 작업들을 많이 해주는 편이다 그러므로 서비스단에서 작성해주는 경우가 많은 거 같다. 🎋 기초(외부 API 호출) 🎍 마무리

March 04, 2022
JAVA
/static/a9d0f0da232aedbd78fc9d35d4f1c209/vuejs.png
VUE 3 + CLI 4 + VUETIFY,QUASAR 개발 환경 구성

🎋 개요 이번에 개발 환경을 VUE 3로 구성했던 경험을 포스팅할 예정 환경 구성 VUE CLI VUE 개발을 쉽게 해 주는 번들러 나는 WEB PACK 설정 BABEL 설정 같은 걸 알아서 해준다 설치를 해준다. vue cli 공식문서 참고 나는 vue3study_2 라는 폴더에 설치했다. vue create vue3_project_set vue3_project_set로 프로젝트 생성 vue3로 진행할 거기 때문에 해당 옵션 선택 vuex 와 vue-router 도 추가해준다. 마지막으로 나는 vuetify를 사용할 거기 때문에 추가해준다. 이제 eslint + pretter 설정을 좀 해줘야 한다. vscode에 elint와 pretter 설정은 구글에 잘 나와있다. 저장 시에 자동으로 포맷해주는 설정만 setting.json에 기입해주면 된다. 그리고 cli로 프로젝트 생성 시에 위의 모든 것들을 옵션으로 할 수 있다. 바로 위처럼 수동으로 선택해주면 스페이스바를 눌러 …

March 04, 2022
VUE
/static/e8f128e9bd3eed0ca6ff8bd817f96eb9/JS.jpg
SSE(단반향통신) Event Source 처리

🎋 SSE(Server-Sent Events)란 무엇인가? Server-Sent Events(이하 SSE)는 HTTP 스트리밍을 통해 서버에서 클라이언트로 Push Notification을 할 수 있는 기술이다. HTML5 스펙에 명시된 표준 기술로 JavaScript 에서는 EventSource API를 이용하여 제어가 가능하다. Internet Explorer을 제외한 대부분의 브라우저에서 지원한다. 전통적인 웹 애플리케이션이라면 클라이언트의 요청에 대해 서버가 응답하는 방식이지만 SSE를 이용하면 별도의 복잡한 기술이 필요없이 HTTP 프로토콜을 기반으로 서버에서 클라이언트로 Real-Time Push Notification을 전송할 수 있다. 한 번 연결이 맺어지면 클라이언트에 의해 종료될 때까지 서버와의 연결이 유지되며 서버가 원하는 시점에 클라이언트에게 메시지를 전송할 수 있다. 이러한 특징 덕분에 최소한 오버헤드로 모니터링 시스템의 그래프 갱신, 채팅 및 메신저 등 광…

March 04, 2022
JS
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
Spring Boot + Secrets Manager + 다중 RDS 연동 (SSH 터널링)

✅ 개요 AWS 의 SecretsManager의 RDS 정보를 받아 두개의 AWS RDS에 접근하여 데이터를 가져와보자 🔑 RDS 생성 먼저 AWS 에 RDS 를 2개 생성해야 한다. 나는 미리 생성해 놨다. 🦄 mySQL RDS 생성방법은 링크를 참고해주세요! 🦄 postegreSQL RDS 생성방법은 링크를 참고해주세요! ✨ 비공개 RDS 접근 방법은 링크를 참고해주세요! 🔑 SecretsManager 사용 생성한 보안암호에 AWS RDS의 정보들이 있다. 두개를 생성해야 한다. 나는 미리 생성해 놨다. 🦄 SecretsManager 생성방법은 링크를 참고해주세요! 🎁 AWS RDS 연동 의존성 추가 jsch 는 private한 RDS에 접근하기위해 터널링시에 필요한 의존성이므로 추가해 주었다 밑에서 자세하게 다룰예정 일단은 추가해준다. 시크릿 매니저가 생성 되었다면 이제 해당 값을 가져오는 로직이 필요하다. 나는 SecretManagerBuild class를 이용하여 진행하…

March 03, 2022
SpringBoot
/static/2d7f437a45f1926c3e95a7d7fec67276/intelliJ.jpg
Intellij AWS RDS(ssh 터널링) 연결

개요 이전에 보안 강화를 위해 비공개 RDS를 만들어 EC2를 통한 접속구성을 했었다. 🎆이전 포스팅 그럼 IntelliJ에서 ssh 터널링을 통해 해당 rds에 어떻게 접근 할수 있을까? ✅ aws RDS(MY SQL) SSH 터널링 연결하기 📌datasource 사용 (key파일 활용) intellj 오른쪽 상단에 datasource 탭 클릭 intellij1.PNG 좌측 + 버튼 클릭후 data source에서 mySQL 선택 SSH/SSL 탭 클릭후 Use SSH tunnel 체크 우측 … 클릭 intellijRDS1.PNG 아래 그림처럼 필요한 정보를 넣어준후 TEST CONNECTION 클릭 intelljRDS3.PNG HOST: ec2 퍼블릭 ip USER NAME: ec2-user(리눅스기본 유저명) PRIVATE KEY FILE: key file 경로 터널링이 무사히 된다면 data source 정보를 넣고 test connection 클릭 name:사용자지정 …

March 03, 2022
Intellij
/static/63d6ecd78662fef9b45b21bd304153c8/aws.png
AWS RDS Private + EC2 연결

✅ 개요 RDS를 생성하여 사용할때 외부에서의 접근을 허용하면 보안상의 약점이 생긴다. 이를 방지하기 위해 외부에서의 접근을 제한하는데 그렇다면 개발자가 어떻게 RDS에 접근을 할수 있을까? 방법은 EC2를 통한 접근이다. 이번 시간에는 비공개 RDS를 생성하여 EC2에서 접근하는 방법을 알아보자. 🔒 RDS 를 외부에 노출 시키지 않는 이유 가장 큰 문제는 보안이다. DB에 모든 정보들이 담겨져 있는 공간인데, 이것이 외부 네트워크에 노출이 되어 있으면 보안에 상당히 취약할 것. 그래서 VPC안에 있는 EC2를 통해서만 접속하게 하는것 이다. 또한 애플리케이션 서버 또한 안전하게 RDS에 접속할 수 있다는 장점이 있다. 위의 그림과 같이 SSH를 통해 EC2에 접속하고, EC2에서만 RDS로 접속할 수 있게 네트워크 구성을 한다 참고 🦄 EC2 인스턴스 시작 및 구성 EC2 인스턴스 생성 일단 기본적으로 인스턴스를 생성 해야한다. 🎈 RDS 생성방법 👓 EC2 생성방법 생성 …

March 03, 2022
AWS
/static/7d3db75af08265e6d086510add2a9471/ec2.png
AWS EC2 접속 방법

🎈 EC2 인스턴스 생성하기 먼저 테스트를 위해 인스턴스를 하나 생성 합니다. 🙏 ec2 생성방법은 링크를 참고해주세요! 해주세요~! ec2connect1.PNG 나는 이렇게 conect라는 이름으로 생성해주었다 💪 프라이빗 키 파일을 통한 접속 인스턴스를 생서할때 다운받은 key 파일이 있을것이다. 나는 C:\Users\leesu 해당 경로에 옮겨주었다. 윈도우 사용자의 경우 해당 pem 파일의 권한을 수정해 줘야한다. 권한 수정은 👉 참고 생성한 인스턴스를 체크하고 연결버튼 클릭 ec2connect2.PNG SSH 클라이언트 클릭 ec2connect3.PNG 맨아래 예시의 명령어를 복사하여 커멘드 창에서 실행 ec2connect4.PNG 접속이 완료된걸 확인할수 있다. 💪 Session Manager 활용하여 접속하기 EC2를 사용하다 보면 SSH Key 파일이 없는데 급하게 서버에 붙어야 하는 상황이 생기게 된다. AWS에서는 session manager 라는 기능을 제공하여…

March 03, 2022
AWS
/static/7d3db75af08265e6d086510add2a9471/ec2.png
AWS EC2 생성

🎈 EC2 인스턴스 생성하기 EC2 서비스에서 생성한 가상 서버를 인스턴스라 합니다. 서버를 켜고 끄는것은 인스턴스를 실행하고 종료한다는 의미와 같습니다. 인스턴스 시작 ec21.PNG 우측 상단에 region을 서울로 선택하고, “인스턴스 시작” 버튼을 클릭합니다. 아래의 각 단계마다 ”?”아이콘 또는 링크에 자세한 공식문서 설명이 있으므로, 공식문서를 꼭 참고하시길 바랍니다. AMI 선택 ec22.PNG 보시는 이미지들은 AWS에서 제공하는 이미지들입니다. AMI는 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로서, 이미지를 통해 인스턴스를 쉽게 만들 수 있습니다. 여기서는 “Amazon Linux 2 AMI (HVM), SSD Volume Type” 인스턴스를 선택합니다. Amazon Linux 2는 차세대 Amazon Linux 운영 체제로, 현대식 애플리케이션 환경에 Linux 커뮤니티의 최신 향상 기능과 함께 장기적인 지원을 제공한다…

March 03, 2022
AWS
/static/7d3db75af08265e6d086510add2a9471/ec2.png
AWS EC2 란?

🎈 Amazon EC2 란? Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2의 기능 Amazon EC2는 다음의 기능을 제공합니다. 인스턴스: 가상 컴퓨팅 환경 mazon 머신 이미지(AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있습니다. 인스턴스 유형: 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공 키 페어를 사용하여 인스턴스 로그인 정보 보호(AWS는 퍼블릭 키를 저장하고 사용자는 개인 키를 안전한 장소에 보관하는 방식) 인스턴스 스토어 볼륨: 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 …

March 03, 2022
AWS
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
Spring Boot + Secrets Manager + RDS 연동

✅ 개요 AWS 의 SecretsManager의 RDS 정보를 받아 AWS RDS에 접근하여 데이터를 가져와보자 🔑SecretsManager 사용 생성한 보안암호에 AWS RDS의 정보들이 있다. 나는 미리 생성해 놨다. 🦄 SecretsManager 생성방법은 링크를 참고해주세요! AWS RDS 연동 의존성 추가 application.yml 파일에 datasource 정의 RDS 데이터 확인(IntelliJ)\ DB 툴을 사용해서 확인도 가능하지만 나는 인텔리제이를 사용하므로 인텔리제이로 연동후 데이블과 데이터를 넣어줬다. 🦄 IntelliJ에서 RDS 연동 링크를 참고해주세요! 아래와 같이 테이블에 더미 데이터를 넣어줬다. springbootsm6.PNG 엔티티 생성 적당한 경로에 tb_file 테이블의 데이터를 가져오기 위한 엔티티와 리포지토리 를 만들어줬다. 컨트롤러 생성 정상적으로 값을 가져오는지 확인하기 위한 컨트롤러 생성한다. 포스트맨 호출 정상적으로 호출이 완료되는…

February 24, 2022
SpringBoot
/static/2d7f437a45f1926c3e95a7d7fec67276/intelliJ.jpg
Intellij AWS RDS 연동

✅ aws RDS(MY SQL) 연결하기 📌datasource 사용 intellj 오른쪽 상단에 datasource 탭 클릭 intellij1.PNG 좌측 + 버튼 클릭후 data source에서 mySQL 선택 data source 정보를 넣고 test connection 클릭 name:사용자지정 Host:생성한 RDS의 엔드포인트 Port:생성한 RDS의 Port User:생성한 RDS의 User Password:생성한 RDS의 Password intellij3.PNG 테스트가 성공적으로 이루어 졌으면 OK 버튼 클릭 쿼리 콘솔 확인 정상적으로 다했으면 아래와 같이 쿼리를 작성할수 있는 콘솔이 열린다. intellij4.PNG 🌭마무리 위의 기능을 활용하여 aws rds에 쉽게 접근하여 쿼리작성이 가능하다. ✅ aws RDS(MY SQL) 연결하기 📌datasource 사용 🌭마무리

February 24, 2022
Intellij
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
Spring Boot AWS Secrets Manager 연동

✅ Spring Boot 연결하기 📌bootstrap.yml 사용 의존성 추가 프로젝트 상단에 bootstrap.yml파일을 추가해주고, 아래와 같이 설정 나의 경우 보안 암호 이름이 /secret/classificator_dev 이다 앞의 /secret는 해당 보안값이 들어가는 prefix 라고 보면된다. 따라서 **/secret/**뒤의 값을 넣어주면 된다. 시크릿 값 확인 아래처럼 간편하게 확인 하기위해 컨트롤러를 하나 생성해 주었다. 포스트맨 호출 정상적으로 값을 가져오는지 확인한다. 시크릿 매니저에 저장한 값들을 확인할수 있다. 위와같은 방식은 확실히 간편하고 편하다 하지만 aws 에서 secrets manager를 사용하다보면 rds의 연결 정보라던가 여러 값들을 가져와야하는 경우가 또생긴다. 그렇기땜에 secrets manager값들을 공통으로 받아서 처리할수 있는 부분이 있다면 더편하다. 📌SecretManagerBuild class 사용 디렉토리 구성 spring…

February 23, 2022
SpringBoot
/static/5c67821b35ff45539d8dabf6704f8181/awsSM.png
AWS Secrets Manager 생성

🔒 AWS Secrets Manager 생성 튜토리얼 🍕민감성 데이터 저장 방식(ex token,accesskey,secretkey…) AWS 콘솔에서 Secrets Manager 콘솔 접근 sm1.PNG 새 보안 암호 저장 클릭 sm2.PNG 다른 유형의 보안 암호 체크 키/값 정의 후 다음 클릭 sm3.PNG 보안 암호 이름 지정 후 다음 클릭 sm4.PNG 여기에서는 자동 교체는 정의 안하므로 기본으로 지정 다음 클릭 sm5.PNG 검토 확인후 저장 클릭 sm6.PNG 생성된 보안 암호 이름을 확인 할수 있다 sm7.PNG 🍕RDS 데이터 베이스에 대한 자격증명 방식 AWS 콘솔에서 Secrets Manager 콘솔 접근 sm1.PNG 새 보안 암호 저장 클릭 sm2.PNG Amazon RDS 데이터 베이스에 대한 자격증명 체크 RDS(생성시 지정한) 사용자 이름과 암호 기재 DB 인스턴스 체크 smrd1.PNG 보안 암호 이름 지정 후 다음 클릭 smrd2.PNG 여기에서는…

February 23, 2022
AWS
/static/5c67821b35ff45539d8dabf6704f8181/awsSM.png
AWS Secrets Manager 란?

🔒 AWS Secrets Manager란? 과거에는 데이터베이스에서 정보를 검색하는 사용자 지정 애플리케이션을 생성하면 일반적으로 데이터베이스에 액세스하기 위한 을 애플리케이션에 직접 포함시켰고 자격 증명을 교체할 시기가 되면 새 자격 증명을 생성하는 것보다 더 많은 작업을 해야 했다. Secrets Manager는 코드의 암호를 포함해 하드 코딩된 자격 증명을 Secrets Manager에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 호출로 바꿀 수 있습니다. 이렇게 하면 에 코드를 검사하는 누군가에 의해 할 수 있다. 또한 사용자가 지정한 일정에 따라 Secrets Manager가 자동으로 보안 암호를 교체하도록 구성할 수 있다. 따라서 단기 보안 암호로 장기 보안 암호를 교체할 수 있어 손상 위험이 크게 줄어듭니다. 🍕AWS Secrets Manager의 기능 런타임에 암호화된 비밀 값을 프로그래밍 방식으로 검색 Secrets Manager는 애플리케이션 소스 코…

February 23, 2022
AWS
/static/4224e836136a56774c6fe0214059dd22/rds.png
spring boot + AWS RDS 연동(mySQL)

📌 AWS RDS(mySQL) 연동 간단한 RDS 연동 실습 ✅ DB 엔진은 mySQL로 실습 🎰 인텔리제이 연동 실습 AWS RDS 콘솔 접근 pgsql1.PNG 데이터베이스 클릭. pgsql2.PNG 생성 되어있는 DB 인스턴스를 확인할수 있다. mySQL로 생성된 식별자 클릭하여 들어간다. 우리가 필요한 정보를 확인한다. DB 식별자 엔드포인트 포트 엔진 인텔리제이 에서 database텝에서 datasource를 mySQL로 선택해준다. pgsql4.PNG Name을 지정하고 Host에 위에서 확인한 엔드포인트를 넣고 rds생성시 지정한 User,Password 값을넣고 Test Connection클릭 mysql2.PNG mysql3.PNG 위와같이 test가 되었으면 인텔리제이 에서 확인가능하다. mysql5.PNG 🔮 서비스 연동 실습 build.gradle 의존성 추가 데이터 소스 정의 application.yml 엔티티,리포지토리 생성 테스트 컨트롤러 생성 포스트맨 …

February 17, 2022
AWS
/static/4224e836136a56774c6fe0214059dd22/rds.png
spring boot + AWS RDS 연동(postgreSQL)

📌 AWS RDS(postgreSQL) 연동 간단한 RDS 연동 실습 ✅ DB 엔진은 postgreSQL로 실습 🎰 인텔리제이 연동 실습 AWS RDS 콘솔 접근 pgsql1.PNG 데이터베이스 클릭. pgsql2.PNG 생성 되어있는 DB 인스턴스를 확인할수 있다. postgreSQL로 생성된 식별자 클릭하여 들어간다. pgsql3.PNG 우리가 필요한 정보를 확인한다. DB 식별자 엔드포인트 포트 엔진 인텔리제이 에서 database텝에서 datasource를 postgreSQL로 선택해준다. pgsql4.PNG Name을 지정하고 Host에 위에서 확인한 엔드포인트를 넣고 rds생성시 지정한 User,Password 값을넣고 Test Connection클릭 pgsql5.PNG pgsql6.PNG 위와같이 test가 되었으면 인텔리제이 에서 확인가능하다. pgsql6.PNG 🔮 서비스 연동 실습 build.gradle 의존성 추가 데이터 소스 정의 application.yml …

February 17, 2022
AWS
/static/4224e836136a56774c6fe0214059dd22/rds.png
AWS RDS 란?

📌 Amazon RDS란? RDS는 AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스이다. ✅ 이 서비스는 산업 표준 관계형 데이터베이스를 위한 경제적이고 크기 조절이 가능한 용량을 제공하고 공통 데이터베이스 관리 작업을 관리한다. 📌Amazon RDS의 개요 AWS 클라우드에서 관계형 데이터베이스를 실행해야 하는 이유는 AWS가 관계형 데이터베이스의 까다롭고 번거로운 관리 작업을 대부분 대신하기 때문 📌 DB 인스턴스 DB 인스턴스는 AWS 클라우드에 있는 격리된 데이터베이스 환경입니다. Amazon RDS의 기본 빌딩 블록은 DB 인스턴스입니다. DB 인스턴스에 사용자가 만든 데이터베이스가 하나 이상 포함될 수 있습니다. 독립 실행형 데이터베이스 인스턴스와 함께 사용하는 것과 동일한 도구 및 애플리케이션을 사용하여 DB 인스턴스에 액세스할 수 있습니다. AWS Command Line Interface, Amazon RDS API 또는 …

February 17, 2022
AWS
/static/02527faa21e636f66be5b525ff91fc94/lambda.jpg
AWS 람다(Lambda) 사용법

🎈 람다(Lambda) 만들기 python을 이용하여 ‘hello world’를 출력하는 람다 함수를 만들어보자. ✅ 람다 사용을 위해 간단한 예제를 통한 실습을 해보자. 🍕튜토리얼 AWS Lambda로 들어간다. 오른쪽 상단에 함수 생성 버튼을 누른다. 만들고자 하는 람다 함수 이름과 사용 언어를 선택한 후 함수 생성 버튼을 누른다. 함수 이름은 lambdatutorial, 사용 언어는 python 3.7로 선택했다. 코드 인라인에 원하는 코드를 추가한다. lambdatutorial 함수에 hello world 출력문을 추가해주었다. ✅ 핸들러 람다 함수에게 어디서부터 코드를 실행해! 라고 알려주는 부분이다. 아래에 있는 기본 설정에서 실행에 필요한 메모리와 시간을 설정후 저장 버튼을 누른다. *메모리는 256MB, 실행 시간은 최대 5분으로 설정했다. 원하는 대로 람다 함수를 잘 만들었는지 확인해보자 코드 탭에서 Deploy 버튼클릭 테스트 탭에서 테스트 …

January 28, 2022
AWS
/static/02527faa21e636f66be5b525ff91fc94/lambda.jpg
AWS 람다(Lambda) 란?

🎈 람다(Lambda) 란? ✅ 프로비저닝이란 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것 ✅ 서버리스 컴퓨팅은 애플리케이션을 실행하기 위해 별도의 서버 셋업 없이 곧바로 코드를 실행해주는 서비스를 의미 🍕AWS Lambda 특징 AWS Lambda는 필요 시에만 코드를 실행하며, 하루에 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능합니다. 사용한 컴퓨팅 시간에 대해서만 요금을 지불하면 되고 코드가 실행되지 않을 때는 요금이 부과되지 않습니다. AWS Lambda에서는 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있습니다. 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버 및 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 코드 모니터링 및 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다. AWS…

January 27, 2022
AWS
/static/54057bee538d49e846f00b29f7edd3a9/s3.jpg
AWS S3 버킷 정책 편집

👀 사용 계기 프로젝트 진행 중 외부 api 연동 과제 진행 중에 private한 s3 스토리지에서 득정 도메인의 접근을 허용하는 방식이 필요하게 되었다. ❗TMI❗ : 네이버 ocr 기능을 사용 중 s3에 저장되어 있는 이미지 파일을 읽어 와야 하는데 보안 특성상 s3 버킷을 public 하게 사용할 수가 없었고 그로 인해 naver api의 접근이 불가능했다..😅 문제 해결을 위해 aws s3 문서를 읽는 중 버킷의 정책을 변경하여 특정 도메인의 접근을 가능하게 하는 방법을 찾았고 나의 삽질을 기록한다..😂 🗑 HTTP Referer란? 예를들어 http://naver.com 웹사이트에서 접근시에 해당 Resource로 보내는 HTTP 헤더의 Referer값은 http://naver.com 입니다. S3에서는 이 Referer값을 판단해 파일을 보여줄지 말지 제한할 수 있습니다. ✅ Bucket 생성하기 테스트를 위한 버킷을 생성해준다. s3 버킷 생성에 대한 자료는 여기에서…

January 26, 2022
AWS
/static/54057bee538d49e846f00b29f7edd3a9/s3.jpg
AWS S3 버킷 생성

🎈 목적 🗑 Bucket 생성하기 1️⃣ AWS console 로그인을 하고 s3 서비스에 접근합니다. 버킷 만들기 클릭! 2️⃣ 버킷 이름, 리전 등을 지정해줍니다. 아래의 다른 정책들은 건드리지 않고 일단 버킷 만들기 클릭! 3️⃣ 저는 아래와 같이 이라는 이름으로 생성 하였습니다. 해당 버킷을 클릭하여 들어가 보면 저장 되어있는 객체들을 확인할수 있습니다. 저는 현재 폴더 만들기를 통하여 폴더를 만들어 놓은 모습입니다. 이로써 기본적인 버킷생성은 완료 하였습니다. 🎈 목적 🗑 Bucket 생성하기 1️⃣ 2️⃣ 3️⃣

January 26, 2022
AWS
/static/54057bee538d49e846f00b29f7edd3a9/s3.jpg
AWS S3 란?

🎈 AWS Simple Storage Service(S3) 란? AWS S3 특징 제공하는 단순한 웹 서비스 인터페이스를 사용하여 웹에서 언제 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있습니다. 개발자는 Amazon이 자체 웹 사이트의 글로벌 네트워크 운영에 사용하는 것과 같은 높은 확장성과 신뢰성을 갖춘 빠르고 경제적인 데이터 스토리지 인프라에 액세스할 수 있습니다. 단독 스토리지로도 사용할 수 있으며 EC2, EBS, Glacier와 같은 다른 AWS 서비스와도 함께 사용할 수 있어 클라우드 어플리케이션, 컨텐츠 배포, 백업 및 아카이빙, 재해 복구 및 빅데이터 분석을 포함한 다양한 사례에 알맞다. S3의 버킷은 무한대의 객체를 저장할 수 있으므로 스토리지의 요구를 미리 추정하여 관리할 필요가 없어 확장/축소에 신경쓰지 않아도 된다. HTTPS 프로토콜을 사용하여 SSL로 암호화된 엔드포인트를 통해 데이터를 안전하게 업로드/다운로드 할 수 있으며 상주 데이터를 자동으…

January 26, 2022
AWS
/static/8d8b6ac4fe04f05e574f43d4e19a71a8/hyundai.jpg
현대 자동차 에서의 프로젝트

어느덧 3년 차라는 허울뿐인 개발자가 되었다 싶을 때쯤 현대자동차의 프로젝트에 투입되었다. 이전에 클라우드의 개념에 대해 자세히 모르던 나는 aws 프로젝트를 접하게 된 거라 많이 떨렸다 항상 사용해 보지 않은 기술에 대한 떨림은 기분이 좋은 거 같다. 이번 포스트에서는 내가 프로젝트의 어떤 부분에 기여했으며 어떤 기술들을 사용해 봤는지를 기술할 예정이며 자세한 기술적인 포스팅은 따로 카테고리에 정리할 예정이다. 1. Market intelligence 사전적인 의미로는 급변하는 환경에 대응하기 위하여 기업에 적합한 정보만을 수집, 가공, 분석하여 기업의 비전과 목표에 맞게 전략 방향을 설정해주는 것을 말한다. 즉 지식 관리 서비스라 보면 될듯싶다. 많은 기업이 지식 관리 서비스를 운영 중이다. 잘 사용하는지는…😅 2. AWS(Amazon Web Service) 프로젝트 진행은 AWS 기반으로 진행되었다 AWS란 아마존닷컴에서 개발한 클라우드 컴퓨팅 플랫폼이다. Amazon Web…

January 25, 2022
project
/static/04dc0a82f77de66c13bfe2476938103e/cjimg.jpg
CJ 대한 통운 에서의 프로젝트

이번 대한 통운 에서의 업무는 기존 운영되고 있는 Q-bridge라는 글로벌 포워딩 시스템의 오류들을 개선하고 추가 개발을 하기 위해 투입되었다. 이번 포스트에서는 내가 어떤 업무에 기여했으며 어떤 기술들을 사용해 봤는지를 기술할 예정이며 자세한 기술적인 포스팅은 따로 카테고리에 정리할 예정이다. 1. Q-Brige History Q-bridge 란 대한통운의 해상, 해운, 항공등 운송업무에 관한 전반적인 모든 관리를 하기 위해 만들어진 시스템이며 오래된 시스템이다 보니 오류도 많고 추가 개발 건도 많은 시스템이었다. ❗TMI❗ : 해당 시스템 초기에 만들어진 년도는 2008년도 이며 계속해서 페이지 추가등 커스텀이 지속적으로 들어갔었다… 그리고 인터뷰때는 Spring으로 만들어져 있었다해서 갔는데 아니더라…😅낚였다…😂 2. 사용 기술 스택 Framework는 Apache Struts로 개발이 되었으며 ibsheet로 화면구성이 이루어 져있었다. 상태관리는 SVN 으로 진행 하였고…

December 30, 2021
project
/static/852c2feaacd5c98c06f3b3903c4aa4c3/ktds.jpg
KT DS 에서의 프로젝트

1년간의 LIG NEX1에서의 과제가 끝난 후 철수하게 되었고 다음 프로젝트는 KT DS의 Flying Cube라는컨테이너 관리 시스템의 화면 고도화 작업에 투입되었다. 뭔가 나에게는 제대로 된 첫 SI 프로젝트였고 접해보지 않았던 Vue.js를 통한 화면 고도화를 접하는 거라 많이 떨렸다. 이번 포스트에서는 내가 프로젝트의 어떤 부분에 기여했으며 어떤 기술들을 사용해 봤는지를 기술할 예정이며 자세한 기술적인 포스팅은 따로 카테고리에 정리할 예정이다. 1. Flying Cube History Flying Cube 란 KT 자체적으로 개발한 컨테이너 관리 플랫폼이라고 본다 해당 시스템은 2차에 거쳐 개발이 되었다고 알고 있다. 😅나중에 알게 된 거지만 의 OpenShift를 벤치마킹?(뺐긴..)시스템 이더라.. 2. Vue.js 프로젝트 진행은 Vue.js로 진행하기로 정해졌고 SPA를 처음 접한 나는 따로 공부를 하고 투입을 했었다 그만큼 VUE는 러닝 커브가 크지 않았다고 생각…

December 28, 2021
project
/static/516987dc98a86e1809f56f1ebec7141b/lignex1.png
나의 첫회사...

🎈 소개 🎈 블로그를 개설하고 첫 포스트를 어떤 내용으로 작성을 할까 고민을 많이 했다… 가볍게 내가 처음 코딩을 시작하게 된 계기와 준비과정 및 첫 회사에 들어가기까지의 과정을 기록하려 한다. 🚀 계기 누구든 취직을 하기 위해 준비를 하는 과정이 있을 것이다. 나는 단 한 번도 컴퓨터와 관련된 일을 할 것이라고는 생각해 본 적이 없었다… 내가 대학을 졸업 후 캐나다에 워킹홀리데이를 갔을 때였다 캐나다에서 2년간 일을 하며 많은 회의감이 들던 시기였다 우연히 개발자 지인을 만나게 되었고 이 직업에 대해 알게 되었다 얘기를 많이 나누며 나도 해보고 싶다는 생각이 들었고 그 생각이 들자마자 실행에 옮겼다 🦖 취직 1. 취직준비 한국으로 돌아온 나는 바로 학원을 다니기 시작했다 아마 많은 비전공자 개발자들이 나와 같은 루트로 처음 시작하지 않을까 싶다 그렇게 학원에서 8개월 정도의 프로그래밍 관련 공부를 하였고 머지않아 모든 과정을 수료하게 되었다 그 과정이 결코 쉽지는 않았으며 많이 …

December 24, 2021
project