본문 바로가기

전체 글141

Spring Boot를 사용하여 JWT 기반 인증 기능을 구현하는 방법 지난 포스팅에서 jwt가 무엇인지 살펴보았습니다. (https://roomconerdeveloper.tistory.com/183) 이제 jwt를 발급하는 기능을  SpringBoot로 구현해 보겠습니다. 소스코드는 github에 있습니다.https://github.com/lsm7179/spring-eCommerce-study/tree/step1 GitHub - lsm7179/spring-eCommerce-studyContribute to lsm7179/spring-eCommerce-study development by creating an account on GitHub.github.com 사용한 버전 및 의존성사용한 버전 다음과 같습니다.* SpringBoot: 3.3.2* Java: 22gradle .. 2024. 8. 21.
JWT란 무엇인가? JWT란?https://jwt.io/introductionJWT는 "JSON Web Token"의 약자로, 웹 애플리케이션에서 인증과 권한 부여를 위한 토큰 기반 시스템입니다.JWT는 기본적으로 서버와 클라이언트 간의 정보를 안전하게 전송하는 데 사용됩니다. 다음은 JWT의 주요 개념입니다: JWT의 구조JWT는 세 가지 부분으로 구성됩니다:헤더 (Header): 토큰의 타입과 사용된 암호화 알고리즘을 설명합니다. 일반적으로 JSON 형태로 alg와 typ 필드를 포함합니다.Typ (type): 토큰의 타입을 나타내며, JWT로 설정됩니다.Alg (algorithm): 서명에 사용된 알고리즘을 나타냅니다. 예를 들어, HMAC SHA256 또는 RSA 등이 있습니다.이 부분은 Base64로 인코딩됩니다... 2024. 8. 7.
말하고 싶거든 베스 데이의 세 황금문을 떠올리자 우리는 항상 말을 한다.일을 하다보면 어떤 의견을 내밷을때 내말의 진심을 명확하게 그리고 진실하게 전달하고 싶었다.특히 코드리뷰를 할때 아키텍쳐 설계시에 더욱 두드러진다.어떻게 할 수 있을까 고민의 고민을 했었다.그러다 인터넷에서 오래된 시를 찾았다.이 오래된 시는 내마음을 울렸다.  베스데이의 세 황금문http://www.makefunoflife.net/social-moral-conduct/three-gates-by-beth-day “Three Gates” by Beth DayMoral Conduct on www.MakeFunOfLife.netwww.makefunoflife.net 세 개의 문다른 누군가 관해 이야기 할 때, 말하기 전에 세 개의 황금문, 아주 좁은 문을 통과해야 한다.첫째, 내 말이 .. 2024. 6. 19.
업무에 바로 쓰는 SQL 튜닝, 데이터베이스 첫걸음 간단 책 후기 안녕하세요~!방구석 개발자입니다.최근 2권의 책을 읽었는데요. 바로 업무에 바로 쓰는 SQL 튜닝, 데이터베이스 첫걸음 이였습니다. 업무에 바로 쓰는 SQL 튜닝올해 봄부터 읽으면서 생각보다 길게 읽었는데요.전체 분량은 296쪽으로 비교적 작은 편입니다.중요한 내용을 핵심적으로 다루고 있으며, 업무에 바로 활용 가능한 실질적인 정보가 풍부합니다.특히 3장에서는 실행 계획의 기본 원리를 이해하고, 직접 분석 및 해석하는 방법을 단계별로 학습할 수 있습니다.4장과 5장에서는 다양한 SQL 케이스를 실제 예시를 통해 분석하고, 실행 계획을 작성 및 해석하는 방법을 단계별로 안내합니다.분석 결과를 바탕으로 적절한 튜닝 기법을 적용하고, 튜닝 후 실행 계획의 변화를 확인하며 성능 향상 효과를 직접 경험할 수 있습.. 2024. 6. 18.
만들면서 배우는 클린아키텍처 => 엔티티와 도메인의 분리 얼마전 만들면서 배우는 클린아키텍처 책을 봤다. 사실 예전에도 본적이 있는데 그때는 서평을 적지 않았다. 저는 책 내용을 정리하는게 아니며 다른 개발자분들이 정리한 블로그글이 있으니 참고하면 됩니다. 한가지 가르침을 받아서 내용을 정리하려고 한다. 엔티티와 도메인의 분리 그동안 업무와 공부를 하며 엔티티와 도메인을 분리해본적이 없다. 엔티티에 직접 비즈니스 코드를 채우고 서비스가 적절히 호출하여 만든 api가 다수였다. 예를 들어 Q&A 서비스를 만든다는 가정하에 간단한 질문테이블과 엔티티(question)를 코드이다. @Entity @Table(name = "question") public class Question extends BaseTimeEntity { @Id @GeneratedValue(st.. 2024. 3. 6.
'소프트웨어 아키텍처 101' 서평 안녕하세요. 올해 첫 완독한 책을 소개하고자 글을 적습니다. 그건 바로 소프르웨어 아키텍처 101 인데요. 작년인가 재작년쯤 사서 23년 겨울부터 24년쯤까지 읽었던 책입니다. 이책은 목차는 24개지만 크게 3가지로 구성되어 있는데 처음은 아키텍처의 기초 즉 정의와 특성 및 거버넌스 , 커네이선스(품질 측정 기준) 등을 다루고 있고 두번째는 레이어드 아키텍처부터 마이크로서비스 아키텍처 까지 아키텍처 토폴로지(컴퓨터 네트워크의 요소들(링크, 노드 등)을 물리적으로 연결해 놓은 것, 또는 그 연결 방식)와 그 전반을 설명해줍니다. 마지막으론 테크닉과 소프트스킬 파트로 아키텍트가 되기위한 소프트스킬 기술등을 알려줍니다. 잘 추상화 되어 있어 어떤서비스를 구성할때 이 책을 보고 바이블처럼 선택 할 수 있도록 도.. 2024. 1. 30.
2023 방구석 개발자 회고 안녕하세요. 방구석 개발자입니다. 오랜만에 블로그를 적어요. 벌써 23년 한해가 마무리되어가는 시기 잘 보내고 계신가요? 벌써 여러 회고 블로그가 포스팅 되고 있네요~ 저도 올 한해를 마무리하고자 회고록을 작성해봅니다. 차량 예약 시스템 개발 및 파트장fms모빌리티 회사에서 차량 예약하는 시스템을 개발했습니다. 예약기능을 개발하였고 비관락을 이용하여 동시성을 처리도 하고 예약 타임라인을 응답해주는 api등 중요한 api들을 개발을 맡아서 진행했습니다. 동시성 처리는 재고시스템으로 알아보는 동시성이슈 해결방법 인프런 강의를 공부하여 비즈니스에 적용해보았습니다. 그리고 chatgpt를 이용했는데요. 타임라임을 만들어 줄 알고리즘을 chatgpt에게 문의해서 풀었고 테스트 코드 또한 만들어 달라 요청해서 실제.. 2023. 12. 29.
Mysql Docs 맛보기 최근 공부로 Real MySql을 읽고 있었다. 문득 이런 생각이 들었다. "java, spring docs는 많이 보는데 mysql docs를 왜 한번도 안봤을까?" 그렇다 RealMySql 책에서도 레퍼런스로 dev.mysql이 있었지만 찾아보지 못했다. 아니 안할걸지도.. 개발자로써 부끄러운 일이지만 이제라도 Mysql Docs를 보려 한다. 같이 찍먹해보자! dev.mysql.com으로 접속하면 Reference Manual 로 접속한다. 필요한 부분을 검색해서 Docs를 살펴본다. 난 최근 옵티마이저가 궁금하니 찾아봐야겠다. mysql docs에서는 쿼리 최적화에 대한 고려 사항을 꽤나 디테일하게 알려 준다. 인덱스를 추가 할 수 있는지 여부를 확인해보기, 인덱스는 검색 속도를 높여준다. 오래 .. 2023. 7. 31.
Spring Cloud Service Discorvery 서비스 디스커버리란? MSA로 구성되어 있는 서비스들은 각자 ip와 포트를 가지고 있고 이런 정보를 관리할 필요가 생기는데 이런 관리 서비스를 Service Discorvery라고 합니다. 스프링에서 서비스 디스커버리를 유레카 클라이언트를 이용해 구현했는데요. 공식 문서를 자세히 보면 나와 있습니다. https://docs.spring.io/spring-cloud-netflix/docs/4.0.0/reference/html/#netflix-eureka-client-starter Spring Cloud Netflix This project provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding t.. 2023. 3. 25.
4장: 부호화의 발전 부호화란? 어플리케이션에서는 메모리에 데이터를 저장할 때 객체, 구조체, 배열 등의 구조로 저장한다. 보통 CPU가 효율적으로 접근할 수 있도록 ‘포인터'를 사용하는데, 이는 다른 언어를 사용하는 프로세스에서는 이해하지 못할 수 있다. 그러므로 데이터를 파일에 쓰거나 네트워크로 전송하려면 바이트 형태로 저장한다. 부호화: 인메모리 → 바이트 (직렬화, 마샬링) 복호화: 바이트 → 인메모리 (역직렬화, 언마샬링, 파싱) 정리하면, 데이터 부호화는 통신 주체(프로세스 또는 서버)가 다른 언어의 데이터 구조를 사용해도 상대 프로세스가 이해할 수 있도록 데이터를 전환하는 것을 말한다. 더 쉽게 말하면 어플리케이션 환경에 구애받지 않는 데이터 형식으로 전환하는 과정을 말한다. 데이터 부호화, 왜 알아야 하는가 데.. 2022. 12. 26.
자바 커맨드(Command) 패턴 설명 커맨드 패턴은 요청을 객체의 형태로 캡슐화하여 사용하는 패턴입니다. 객체의 행동을 변화시키는 요구나 명령을 클래스로 표현하는 패턴입니다. 왜 사용해야 하는지 다양한 요청을 안전하게 처리할 수 있다. 각각의 커맨드들은 특정 객체에 의존하지 않도록 만들어지므로 재활용성이 매우 높습니다. 예시 저희는 이제 리모컨을 만들어 보겠습니다. 리모컨에는 4개의 버튼과 4가지 기능이 있는데요. 우선 커맨드를 인터페이스로 정의해보겠습니다. public interface ButtonCommand { public void run(); } 그다음 4가지 버튼의 기능을 만들어 보겠습니다. public class PowerOnButton implements ButtonCommand { @Override public void .. 2022. 12. 12.
2장:데이터 중심 애플리케이션 설계 이번 챕터를 읽고 얻고 싶은 목표 어플리케이션 개발자로써 적합한 데이터 모델을 선택 할때 도움을 얻고 싶다. 다양한 범용 데이터 모델 역사적으로 데이터 모델이 많이 생기고 사라졌지만 현대에 주로 사용하는 데이터 모델은 3가지 입니다. 관계형 데이터베이스 문서 데이터베이스 그래프 데이터베이스 그리고 각 데이터 베이스는 장단점이 있고 각각의 특화된 질의언어(Query Language)를 가지고 있습니다. 관계형 데이터베이스 오늘날의 가장 잘 알려진 데이터 모델 : 1970년 에드가 코드(Edgar Codd)가 제안한 관계형 모델이다. 관계형 데이터베이스의 근원은 비즈니스 데이터 처리에 있다. 트랜잭션 처리와 일괄 처리 등등을 할수 있다. 문서 데이터베이스 NoSQL은 관계형 모델의 우위를 뒤집으려는 가장 최.. 2022. 12. 12.
반응형