분류 전체보기

이 글은 지난 번 올린 게시글로 발생한 오류에 대해 겪은 트러블슈팅과 회고에 대한 글이다.Spring Boot 서버가 메모리 문제인지 계속해서 멈추는 문제가 있었고, 회원 가입은 성공해도 레디스 연동이 되지 않아 로그인에서 500에러가 발생했다. 이 오류를 해결하는 과정에서 많은 걸 시도해보고 경험해봤기 때문에 똑같은 실수를 반복하지 않기 위해 기록해두려 한다. 1. 현재 배포 환경현재 프로젝트의 배포 환경은 다음 이미지와 같다. AWS의 EC2 인스턴스로 서버 배포를 진행 중이고, DB 서버와 SpringBoot 서버를 각각 나누어 도커 환경에서 실행 중이다. 시도해본 내용이 정말 많은데... 2. 트러블 슈팅1. SpringBoot 서버 멈춤 이슈 Batch 작업으로 openAPI의 데이터를 호출하고..
· Server
[gRPC 사용 계기]MSA(Microservices Architecture)의 관점에서 서버를 분리하여 개발하는 방법을 찾던 중, gRPC는 비교적 러닝 커브가 낮고 개인 개발에서도 실용적인 통신 방식이라 판단하여 이를 사용해보기로 했습니다.인증 서버는 회원 기능만 담당하고, 그 외 비즈니스 로직은 자원 서버에서 처리하는 구조로 설계하였습니다. 자원 서버로 들어오는 모든 API 요청에 대해 인증 서버로 토큰 검증 요청을 보내고, 그 결과를 바탕으로 인증하는 방식으로 구현하고자 합니다. 이 내용은 인증 서버에 회원 기능이 구현되었다는 전제 하에 작성되었습니다. [연동 방법 진행 순서]각 build.gradle에 의존성 추가각 application.yml에 설정 추가proto 파일 작성자원서버의 gRPC ..
컨퍼런스 후기9월 26(목) - 9월 27(금) 양일간 진행된 컨퍼런스에 다녀왔다. 재밌고 유익한 경험이었고 오랫동안 기억하고 싶어 후기를 작성해본다.DAY 01 정--말 오랜만에 오프라인 테크 컨퍼런스에 다녀왔다. 함께 원티드 프리온보딩 인턴십을 수료한 분께서 알려주셔서 같이 가게 됐다! 입장 시에는 현장 신청과 사전 신청으로 나뉘는데, 나는 위의 홈페이지에서 사전 참가 신청을 해놓았기 때문에 대기 없이 바로 입장할 수 있었다. ✌🏻 (사실 현장 신청 인원이 그렇게 많아 보이진 않았다.!) 사전에 로드맵으로 봤을 때 장소의 규모가 엄청 크게 느껴지진 않아서 혹시라도 자리가 없을까봐 오픈런을 했다ㅋㅋ 그런데 막상 가보니 충분히 입장 가능했다는~.~ 입장 후에는 본인 확인을 거쳐 이름이 적힌 명찰 목걸이..
· TIL
5주간의 프로젝트 일정이 어제 마무리 되었다.돌이켜보면 정말 많은 일들이 있었는데, 벌써 끝이 났다니 시간이 참 빠르게 느껴진다. 급하게 프로젝트 발표를 맡게 되어 자료를 만들고, 대본도 여러 번 연습하지 못한 채 발표대에 섰다.1조가 너무 발표를 잘해서 기가 좀 죽었지만..ㅎㅎ, 전반적인 부분에 있어 다 우리 조도 해당되는 말이 있었고, 그 내용을 참 잘 녹여냈다는 생각을 했다. 무튼 우리 조 발표에만 집중하지 않고 다른 조들 발표를 들으며 알게 된 점들이 또 많았다. 우선, Flyway라는 DB 형상 관리 도구를 처음 알게 되었고, 개발을 위한 시나리오부터 예외 처리까지 구체적으로 구상하고 설계하는 테크 스펙 작성법에 대한 것도 알았다. 또한, 우리 조가 RedisTemplate 대신, Spring에..
Java/SpringBoot로 개발한 서비스를 도커 이미지로 컨테이너화해서 EC2 서버에 배포하기로 결정하였다. 1. 처음엔 t2.micro 서버 하나에 Redis, Mysql, Java 프로젝트를 한 번에 올리려고 했음-> Dockerfile에 어떤 걸 작성해야 할지, 환경변수 설정을 어떻게 하는 지에 대한 개념 부족으로 시간 지체-> 이슈 해결 후에는 서버가 부하가 발생해 자꾸 죽음 2. 서버를 분리하여 배포하기로 결정-> 한 서버에는 Redis와 Mysql 실행-> 다른 서버에는 Java 프로젝트 실행 1번에서 2번으로 바꾸고 성공하기까지는 장장 6시간이 걸렸ㄷr.. 까먹기 전에 우선 순서를 남겨놔야지 1. Dockerfile 작성# Use OpenJDK 17 slim image as base fo..
1. JWT란?Jwt란 : Json Web Token의 준말로, 사용자가 로그인 요청을 보낼 때마다 매번 유저 검증을 위해 DB를 조회하지 않고, Token 안의 값으로 유저를 검증할 때 사용되며 양 당사자 간에 정보를 안전하게 전송하기 위한 웹 표준 (RFC 7519)이다.2. JWT의 구조 - JWT는 Header.Payload.Signature 형태로 되어있다. 토큰 예시) 아래 링크에서 확인이 가능하다.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c👉  https://..
💡 개발 환경Java 17, Spring 3.3.X, Gradle 8.8, MySQL 앞선 게시물에서 서울시 공공데이터를 활용해 openAPI에 데이터를 요청하는 방법을 알아봤다.이제 요청해 받아온 데이터를 직접 DB에 저장하는 방법을 알아보자. > ApiServiceImpl.java...import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Val..
💡 개발 환경Java 17, Spring 3.3.X, Gradle 8.8, MySQL [OpenAPI 활용 계기]사용자의 위치 기반 맛집 추천하는 서비스 개발서울시 공공데이터 포털(열린데이터 광장)에서 제공하는 openAPI를 활용해 음식점들의 데이터를 수집하기로 결정 1. 페이지 접속 후 수집하고자 하는 데이터를 검색한다. 2. 여러 후보 중 원하는 형태의 데이터를 선택한다. 3. 인증키 신청을 한다. (로그인 후!) 4. 발급된 인증키를 확인한다.  5. 아래 버튼을 눌러 예제 코드를 확인한다.6.  사용하는 언어를 선택한다. (필자의 경우 JAVA를 선택) > ApiExplorer.java  (아래 코드를 사용하고자 하는 openAPI에 맞게 수정한다.)/* Java 1.8 샘플 코드 */pac..
Redis 기본 세팅Install DockerwindowmacOSInstall Git BashInstall Git BashInstall Redis ImageGit Bash를 실행 후 $ docker 명령어를 실행시켜 docker가 설치 및 실행 되었는지 확인Install Redis - $ docker pull redisExecute Redis Container$ docker run --name petpat_redis -p 6379:6379 redisDocker Desktop이나 $docker ps 명령어를 이용하여 실행중인 컨테이너를 확인할 수 있다.Redis Container 생성 및 실행과 비밀번호 설정을 같이 하는 경우$ docker run --name petpat_redis -p 6379:6379..
· TIL
💡 git commit template     : commit 시에 등록된 commit template을 보여줌으로써        commit message를 일정한 규칙에 맞게 작성할 수 있도록 도와줌    [git commit template 등록하기]git 폴더가 있는 위치에 .gitmessage.txt 파일을 생성 2. 생성한 .gitmessage.txt 에 내용을 작성# 으로 시작하면 주석 처리되어 커밋에 보이지 않습니다.다음 사이트를 참고하여 본인에 맞게 룰을 작성하면 됩니다.https://meetup.nhncloud.com/posts/106  [Type] title (#이슈번호)# [Header]# 형식 - [Type] title (#이슈번호)## [Type] 입력 목록# 1. Feat:..
예령 : )
'분류 전체보기' 카테고리의 글 목록