[LOATODO] 스프링 개발자의 NestJS 찍먹 후기
·
Project/LOATODO
1. 나름 안정적인 운영개발을 하다보면, 익숙한 환경을 벗어나 새로운 환경을 시도해보고 싶을 때가 있습니다. 백엔드 개발자가 갑자기 프론트엔드를 한다던가... 앱 개발을 한다던가.... 국비지원 자바로 시작해서 스프링으로 넘어가고,로아투두도 그렇고 현재는 주로 스프링 부트를 사용해 백엔드 개발을 해오고 있습니다. 최근에 느낀점은새로운 프로젝트를 시작해도, 이미 만들어진 틀이 있어spring starter에서 Security, JPA, QueryDSL 등 필요한 라이브러리 가져오고대충 config 파일 만들어서 세팅해주고 도커 파일 만들고 AWS에서 설정 해주면 CI/CD 들어가서 배포까지 깔끔하게 됩니다. 이렇게 하면 t4g.micro EC2를 예약 인스턴스를 구매했다는 가정하에하루에 2달러 내외의 서버..
[LOATODO] 어쩌다 서비스 운영 / 약 2년 동안의 회고
·
Project/LOATODO
1. 2022년 9월 ~ 2023년 5월 / 방황- 국비 수료 후 취업, 수습 후 퇴사- 본격적인 Spring Boot 공부- 로스트아크 오픈 API로 여러가지 데이터 비교 (Spring Boot + JSP) 7월에 국비교육을 마치고 9월 쯤 4개의 프로젝트(라고 부르기 민망한)를 가지고 운좋게 취업을 빨리하였다.PHP 기반의 보안 회사의 UI/UX 팀이였는데, 보안 회사라 그런가... 나랑은 좀 안맞았다새로운 것을 배우고 무언가를 만들고 싶어 개발을 시작했는데 조금 다른 느낌...그래서 2달의 수습을 마치고 퇴사를 하였다. 그리고 월급으로 인프런에서 김영한 강사님 인강을 다 샀다. 한 100만원 좀 넘었나..?실력도 많이 오르고 사고방식도 달라지고 지금 2024년인데도 아직까지 반복해서 보고있다. 그러..
[LOATODO] 로스트아크 API 키 발급 및 사용법
·
Project/LOATODO
로아투두는 원할한 기능을 위해 사용자들에게 로스트아크 오픈 API키를 받고 있습니다.발급 방법을 모르시는 분들이 계셔 발급 방법을 남깁니다. 로스트아크 API 사이트https://developer-lostark.game.onstove.com/ Lostark OpenAPI Developer PortalOpen API For All Developers START BUILDING YOUR OWN CLIENTS TODAY USING OFFICIAL DATA. GET ACCESS TO LOSTARK APIdeveloper-lostark.game.onstove.com 로스트아크 API 발급 방법1. 위 링크로 들어가시거나 로스트아크 공식 홈페이지에서 하단으로 스크롤하여 오픈 API 버튼을 클릭하세요 2. 오픈 AP..
[LOATODO] 전략패턴(Strategy Pattern)을 이용한 코드 리팩토링
·
Project/LOATODO
1. 서론디자인 패턴 중 전략패턴에 대해 공부하였고 프로젝트에서 수정하면 좋은 부분이 생각나서 반영하였습니다. - 공부자료 1 : 전략 패턴 예제 작성 + 깃허브 커밋 (참고. JAVA 객체 지향 디자인 패턴 서적) Fetch: 전략패턴 · minhyeok2487/DesignPattern@1a60ca0minhyeok2487 committed Feb 26, 2024github.com - 공부자료 2 : 사이트 전략 패턴/ 디자인 패턴들 / 행동 패턴 전략 패턴 다음 이름으로도 불립니다: Strategy 의도 전략 패턴은 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환refactoring.guru  2. 리팩토링2 - 1. 리팩토링 부분현재 LoaTodo의 레이..
[LOATODO] 이메일 인증 Redis 서버 -> RDBMS로 변경
·
Project/LOATODO
1. Redis 사용 중지LoaTodo는 현재(2024년 2월 1일) 이메일로 가입하는 방식과 구글과 연동해서 가입하는 방식두가지를 지원하고 있습니다. 그 중 인증번호를 확인하는 로직에서 데이터를 저장하는 용도로 Redis를 사용하고 있고Redis 서버는 AWS ElastiCache에서 구축하고 있습니다.   [ 코드 일부 ]public int sendMail(String mail){ MimeMessage message = createMail(mail); javaMailSender.send(message); saveRedis(mail, number); return number;} public boolean checkMail(MailCheckDto mailCheckDto) { L..
[LOATODO] 이메일 인증 추가후 구글 로그인 error
·
Project/LOATODO
1. 서론현재 LoaTodo는 구글 로그인으로만 가입이 가능한 상태인데 추가로 일반적인 회원가입과 로그인도 추가하려고 한다.(사실 원래 있었다가 굳이 있어야하나 싶어서 뺐었다...) 간단한 로그인 / 회원가입 코드와 JWT 관련 로직은 있어서 추가로 이메일 인증 정도만 넣으면 되는데여기에 Redis를 추가해보려고 한다. 당장으로는 이메일 인증 유효시간에 쓰고 추후 코드 리팩토링할 때 서버 최적화를 위해 사용할 예정이다.  [Spring] Spring Boot Redis 사용하기 / 이메일 인증 유효시간Redis는 key-value 구조로 데이터를 저장하는 In-memory 기반의 데이터베이스 시스템입니다. Spring boot 에선 어떻게 구현하는지 알아봅시다. 1. 먼저 Redis란? 먼저 Redis가..
[LOATODO] 코드 리팩토링 SELECT 리팩토링
·
Project/LOATODO
1. 서론연관관계 테이블이 늘어나면서캐릭터 데이터를 호출할 때 SQL문이 여러번 실행된다. 1 - 1. 기존코드@Query(value = "SELECT c FROM Character c WHERE c.member = :member AND c.serverName = :serverName")List findCharacterListServerName(@Param("member") Member member, @Param("serverName") String serverName); JPA로 Member Entity를 불러와서 Controller에서 DTO로 변경할 때필요한 데이터들을 LAZY 형식으로 불러온다. 1 - 2. 기존코드 결과2023-11-24 17:32:29.777 DEBUG 39633 --- [ni..
[LOATODO] JPA 영속성 컨텍스트 더티체킹 VS JPQL로 벌크업데이트
·
Project/LOATODO
1. 서론프로젝트에서 JPA를 사용하여 CRUD 중 Update를 구현할 때,보통 변경감지(Dirty Checking)를 이용합니다.Entity를 조회하여 조회된 Entity 데이터를 변경만 하면 데이터 베이스에 자동으로 반영이 되도록 하는 기능입니다. 1 - 1. 영속성 컨텍스트JPA에서는 Entity Manager를 통해 데이터 베이스 작업을 처리합니다.Entity Manager는 내부적으로 영속성 컨텍스트라는 메모리 영역을 가지며 이 안에 데이터베이스로부터 조회한 Entity 객체들이 저장되어 있습니다. 1 - 2. 영속성 컨텍스트 변경감지(더티 체킹) JPA는 트랜잭션 되는 순간 내부적으로 flush()가 호출됩니다.그때 엔티티와 1차 캐시 내의 스냅샷(최초 상태)을 비교합니다.비교했을 때, 변경..
[LOATODO] 주간 숙제 완료 시 수치가 초과되는 에러
·
Project/LOATODO
1. 서론주간 숙제 완료(체크)시 수치가 초과되는 에러가 있다  오른쪽 상단 주간 수익 107.4%...2. 개발2 - 1. 백엔드 원인골드 획득 리스트랑 상관없이, 캐릭터에 저장된 컨텐츠가 수익으로 더해짐 character.getTodoV2List()를 반복문을 돌려서 todoResponseDtoList 만들고 난 후토탈 골드 획득 높은 순으로 3개를 정렬하여 4번째 부터는 0골드로 변경-> 여기서 characterDto.setWeekGold 할 때, todoResponseDtoList랑 상관없이 character.getTodoV2List()여기에 있는게 더해짐 2 - 2. 백엔드 수정 -> todoResponseDtoList 생성 후 character.getTodoV2List() 반복문 한번 더 돌림..