본문 바로가기

전체 글31

Redirect URI는 프론트엔드여야 할까? 백엔드여야 할까? (OAuth 2.0에 대해서 알아보기) 계기: Redirect URI는 프론트엔드여야 할까? 백엔드여야 할까? 최근에 회사에서 개발을 진행하던 중, 로그인 방식 중 MS Entra ID 로그인을 구현해야 하는 요구사항이 있었습니다. MS Entra ID는 마이크로소프트에서 제공하는 OIDC 규격의 서드파티 로그인 서비스인데요. 사실 이번에 직접 구현해보기 전까지는 OAuth 2.0과 OIDC에 대해서 개념만 대충 알고 있었고, '실제로 구현하게 되면 그때 문서 보고 하지~' 같은 안일한 마음으로 열심히 공부하지 않았습니다.  그런데 막상 구현하려고 보니 생각보다 막히는 부분도 많았고, 프론트엔드 분들과 소통할 때도 서로 생각하는 시퀀스가 달라서 뭐가 맞는지에 대해서 고민이 많이 되더라구요. 그 중에서 가장 의견이 분분했던 Redirect UR.. 2024. 12. 24.
[Java] Optional.of는 왜 있을까? Optional 그리고 Optional.ofOptional은 Java를 사용할 때 null-safe한 코드를 간결하게 짤 수 있게 해주는 좋은 클래스입니다.저는 가능하면 Java에서 null을 다룰 때 Optional을 많이 사용하는데요. 1. if문을 사용한 검사보다 코드가 더 간결하고2. 직접적으로 null을 사용하지 않아도 되며3. 람다를 활용하여 필요한 동작을 매끄럽게 연계할 수 있기 때문입니다. 그런데 Optional을 사용하다 보니 Optional.of가 왜 필요한지 의문이 들었습니다. Optional.of의 javadoc을 보면 다음과 같이 나와 있는데요.Returns an Optional describing the given non-null value.Throws:NullPointerExc.. 2024. 10. 10.
[JPA] @Transient와 @Transient? (Spring Data와 JPA의 관계에 대해서) 프로젝트 개발하면서 @Transient Annotation과 관련하여 고생한 경험을 바탕으로, 깨달은 점을 정리해보려고 합니다.@TransientSpecifies that the property or field is not persistent. It is used to annotate a property or field of an entity class, mapped superclass, or embeddable class.https://docs.oracle.com/javaee/7/api/javax/persistence/Transient.html Oracle에서 제공하는 Java Persisence의 @Transient 항목을 보면, 다음과 같이 설명하고 있습니다.영속적이지 않은 프로퍼티나 필드를 명시한.. 2024. 10. 3.
OpenTelemetry 1편 - 개요 왜 필요한가?서비스를 개발하고 배포,운영하다 보면 다양한 비기능 요구사항에 마주치게 되는데요.이러한 요구사항을 만족하기 위해서는 서버가 어떻게 돌아가고 있는지에 대한 여러 정보가 필요하게 됩니다. 특히나 단순히 로그를 남기는 정도로는 해소하기 어려운 케이스들이 발생하게 됩니다.예를 들어, 다음과 같은 케이스에서는 로그만으로 해결하기에는 어려움이 있습니다. 1. 분산 시스템 환경  MSA, 클라우드 네이티브 환경에서는 기존의 운영 방법에 한계가 있습니다. 봐야 하는 정보가 여러 마이크로 서비스에 분산되어 있고, 서비스간 상호작용을 한 눈에 보기 어렵기 때문입니다. 2. 실시간 문제 분석 로그는 사용자가 설정한 이벤트만 기록하고, 이는 과거의 기록이므로 실시간으로 발생하는 성능 저하나 장애를 분석하는데는 적.. 2024. 9. 16.
[JPA] @OneToOne 관계와 UNIQUE 제약조건 @OneToOne 관계에 대해서 JPA에서는 일대일 연관관계를 맺는 엔티티를 표현하기 위해서 @OneToOne 애노테이션을 지원합니다. 일대일 연관관계에 대해서 JPA는 문서에서 3가지 예시 케이스를 제공하고 있습니다. FK 컬럼을 매핑하는 일대일 연관관계 PK를 공유하는 일대일 연관관계 Embeddable 클래스를 통한 일대일 연관관계 각각의 케이스를 예제로 살펴보면 다음과 같습니다. FK 컬럼을 매핑하는 일대일 연관관계 // On Customer class: @OneToOne(optional=false) @JoinColumn( name="CUSTREC_ID", unique=true, nullable=false, updatable=false) public CustomerRecord getCustomer.. 2024. 4. 8.
Dataverse Community Meeting 2023: Sharing data for future generation 2편 Dataverse의 미래 발전 방향 Dataverse의 미래 발전 방향은 크게 세 가지 정도로 요약할 수 있었습니다. Frontend와 Backend를 분리하고 Frontend를 React/TS 기반의 SPA로 개선 Shibboleth 등 여러 인증 수단을 래핑하고 OIDC와 Keycloak으로의 전환 컨테이너화 Frontend와 Backend 분리 및 SPA 개선 Dataverse의 기술 스택은 Java EE 8, JPA, JSF로 되어있습니다. 스프링 부트와 관련 스택들이 보편화된 지금에 와서는 다소 연식이 느껴지는 기술들인데요. Dataverse가 2007년에 시작한 프로젝트이다보니 아무래도 현재에 와서는 레거시 코드가 되어버린 것이 꽤나 있습니다. Java EE 8과 스프링은 선택의 차이라고 생각.. 2023. 6. 20.
네트워크 영역에서의 NAT와 AWS NAT Gateway: 2편 AWS NAT Gateway https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-nat-gateway.html NAT 게이트웨이 - Amazon Virtual Private Cloud 보조 IPv4 주소는 선택 사항이며 NAT 게이트웨이를 사용하는 워크로드가 단일 대상(동일한 대상 IP, 대상 포트 및 프로토콜)에 대한 동시 연결 55,000개를 초과하는 경우 지정하거나 할당해야 합니다 docs.aws.amazon.com AWS NAT Gateway는 AWS 클라우드 환경에서 NAT 서비스를 제공해주는 게이트웨이입니다. 일반적으로 게이트웨이는 외부 인터넷과 연결해주는 엔드포인트를 지칭하곤 하는데요. AWS NAT Gateway는 private subn.. 2023. 6. 20.
네트워크 영역에서의 NAT와 AWS NAT Gateway: 1편 클라우드 환경에서 인프라를 프로비저닝 할 때, 처음 해보면 어렵고 헷갈리는 개념이 있는데, 바로 NAT Gateway입니다. 사람마다 다를 수 있겠지만 초심자 입장에서 이 개념이 어려운 이유는 크게 두 가지입니다. private, public ip(private, public subnet)에 대한 이해 부족 NAT 기술에 대한 이해 부족 개인적으로 어려웠던 부분을 어떻게 이해했는지 소개하며 기술의 배경부터 원리, 클라우드 환경에서의 NAT Gateway 개념까지 소개해보겠습니다. NAT가 무엇이고 왜 필요한가? NAT란 Network Address Translation의 약자로 네트워크 주소 변환을 의미합니다. RFC2663에 따르면 NAT는 다음과 같습니다. Network Address Translat.. 2023. 6. 16.