Slack app 생성 URL : https://api.slack.com/apps 왼쪽 탭 Basic Information에서 APP ID, ClientID, Cleint Secrit 데이터를 확인한다. Redirect URL은 왼쪽 탭 OAtuh & Permissions에서 Redriect URLs 에서 추가 하면된다. 그리고 App에서 사용할 Scopes를 세팅한다. channels:historyView messages and other content in a user’s public channelschannels:readView basic information about public channels in a workspacechannels:writeManage a user’s public c..
애플 oauth2 로그인 콘솔 접속 방법애플 개발자 콘솔 접속 URL : https://developer.apple.com/account 위 URL 접속해서 인증서로 들어간다. 왼쪽탭 Identifiers 를 들어가서 오른쪽 ServicesIDs에 들어가서 Identifiers를 만든다.그리고 Sign In with Apple 의 Enabled체크와 Configure 에서 그리고 Website URLs 의 + 버튼을 클릭해서 도메인과, Return URLs를 기입하면된다. Return URLs가 허용할 redirect URL 이다. 기입했으면 저장해야되는데 나와서 Continue 버튼을 클릭하고 save버튼을 누르면 된다. 로그인할때 scope로 name과 email, response_typ..
구글은 email이나 calenar에 대한 알림을 구독 하려면Pub/Sub을 이용해야 한다. https://console.cloud.google.com/cloudpubsub위 URL에 접속해서 Topics에 들어간다음 Topic을 만들고 구독을 추가 하면된다. 전송유형은 push로 해서 알림을 받을 endpoint를 기입해주면 된다. 그리고 소스에서는 구글 sdk를 이용해서 WatchRequest()에 그 위에서만든 토픽 이름을 이용해서 watchRequest 객체를 만들고val resourceList = listOf("INBOX")/** * Gmail watch 요청은 Cloud Pub/Sub 이용하여 푸시 알림을 전달 */val watchRequest = WatchRequest().appl..
portal.azure.com 사이트로 로그인해서 Microsoft Entra ID 서비스로 들어간다. 그 다음 왼쪽 탬 관리에서 앱등록 으로 들어가서 앱등록을 한다. 앱 등록에서는 지원되는 계정 유형이 있다., 모든 조직계정과 개인계정이 사용될수 있도록 하려면 아래 3번째꺼를 선택하면된다.만들어진 앱에서 클라이언트 ID와 시크릿 키를 발급받으면 된다. 그리고 관리>인증에서 웹 리디렉션 URI를 기입하면된다. 그리고 왼쪽 탭 관리>API 사용권한 에서 사용자가 사용할수 있는 API 사용 권한을 추가 해줘야 한다. 여기서는 사용자가 API 를 사용요청을 하였을때 그 API에 대한 권한을 열어주기 위함이다. 권한추가 > Microsoft Graph > 위임된 권한 에서 권한 선택 칸에서 검색하고 권한을 선..
회사에서 기존 B2B 소스를 기반으로 B2C 개발을 진행하기로 했다. B2B에서 쓰던 공통 소스들이 분명 있을거고, 또 B2B에서 적용될거와 B2C에 적용될게 동시에 있을게 분명하였다. 공통 부분을 관리해서 B2C와 B2B에 같이 적용시키기 위해서 멀티모듈을 하자고 제안했다. 우선 B2B 소스를 멀티모듈로 나눠야 했었는데 Application, Service, Repository 레이어드 아키텍처 기반으로 분리를 하였다. 그리고 실제 작업의 모듈 이름은 아래와 같이 common, b2b-api, common-service, common-domain 으로 분리를 하였다.setting.gradle.kts 파일에서 include 안에 모듈명을 인입하여 모듈을 생성하면 된다. 구성 설명goyoai-backe..
결제 연동을 하기 위해서는 가장 간단한 방법으로 포트원 API를 이용하는 것이다. 각 PG사에서 제공하는 API를 이용하여 개발해야 하고 각 PG사마다 제공하는 API에 맞게 개발을 해야 하는데 포트원 API를 사용하면 모든 PG사와 결제수단을 쉽게 이용할 수 있다. 그리고 테스트 연동도 제공한다. 테스트 연동을 하면 자정 전에 결제 취소가 자동으로 된다. PG는 Payment Gateway 약자로 거래 및 결제를 도와주는 결제 대행사이다. 포트원은 모든 PG 모아서 한 번에 제공해 준다. 포트원 API 결제 프로세스결제 프로세스는 간단하다. 구매 페이지에서 결제창을 호출하고 PG사에 결제 인증을 요청한 다음 PG사에서 받은 결제 키 전달받는다. 그리고 PG사에 결제 요청을 하고 카드사에 결제 요청을..
Vault를 적용하게된 계기는 application.yml 파일에 DB접속 URL 등 다양한 개인정보들이 git에 노출되는것이 문제여서 적용하게 되었다. 기존에는 Jasypt 를 이용해서 암호화 하였는데 이것 역시 secret 키값이 프로젝트 코드속에 있어서 마음만 먹으면 secret 키값을 알아내서 암호화를 풀수 있다.Vault는 분산시스템에서 사용되고 시크릿한 정보들을 스프링 클라우드에서 데이터를 가져온다. 지금 프로젝트에서는 분산 시스템이 아니지만 나중에 분산시스템으로 변경 했을때 사용될수 있을것 같아서 미리 도입해 보았다. 그리고 환경변수에 값을 인입하는 방법도 있지만 그 많은 개인정보들을 환경변수에서 관리하면 데이터들이 늘어날수록 관리의 복잡성이 늘어나서 한계가 있다.환경변수에는 비밀정보가 아닌..
회원가입을 하기 위해서 3가지 흐름이 있다. 회원가입 로직1. 회원가입시 입력한 인증번호 확인2. member 테이블에 회원정보 저장3. account 테이블에 회원 인증정보 저장 위 로직 설명account 테이블이 따로 있는 이유는 회원 종류가 늘어날때 회원 종류의 테이블을 모두 돌아야 해서 회원 종류의 확장을 고려해 account 인증 테이블을 추가하였다.member테이블에 먼저 저장하는 이유는 member 테이블에 있는 전화번호 등 유효성검사를 하고 member 엔티티가 저장되고 생성된 id 값을 account 테이블에 넣기 위해서이다. [기존 코드]기존코드에서는 아래 코드처럼 Service 하나에서 위 로직을 모두 넣었다. @Transactionaloverride fun signUp(creat..
기존 2차 프로젝트에서 기준에서 3차 프로젝트를 하면서 2차 프로젝트의 자바 코드를 코틀린 코드로 변환을 완료하였다.2차 프로젝트 깃허브 링크 3차 프로젝트 깃허브 링크 프로젝트 환경Spring Boot 3.3.2Java 17코틀린 사용하면서 느낀 장단점Lombok 제거전환과정에서 자바와 가장 컸던 점은 코틀린에서는 Lombok을 안쓴다는 점이다. Lombok을 안쓰는 이유코틀린에서는 타입추론 기능이 있어서 변수앞에 타입을 안붙인다. 변수 값에 의해서 타입이 정해진다. 그래서 변수 앞에는 val이나 var을 붙이는데 val은 Getter 기능이 포함되어 있고 var은 Getter, Setter가 포함되어 있다.@Data 대신에 Data Class를 사용하면 equals(), hashcode(), toSt..
회원가입 이메일 인증 방법 개선전에는 MemberEntity에 enabled 필드를 추가하여 회원가입시 DB에 가입정보를 insert할때 enabled 필드에 false값을 넣어서 회원을 비활성화 하고 전송된 인증메일에 링크를 누르면 enabled 값을 true로 변경하여 회원을 활성화 시켰다. 하지만 이 방법은 회원이 인증을 하지 않으면 DB에 쓰레기 값만 남게 되고 회원이 다시 똑같은 아이디(email)로 회원가입을 못한다. 그래서 이메일로는 인증번호를 전송하고 회원가입 화면에서 인증번호를 제대로 기입해야 회원가입이 완료되도록 설정하였다. 인증번호 유효성은 Redis를 활용하였다. DB를 사용안하고 Redis를 활용한 이유는 DB에 직접 접근하지 않고 Redis 캐싱을 활용하여 인증을 빨리 할수있고 ..
회원가입 후 스프링 시큐리티의 기능을 활용해 계정을 비활성화하고 이메일 인증을 하여 회원을 활성화하는 방식으로 가장 간단하게 이메일 인증을 구현하였다. 1. mail 의존성 추가. implementation 'org.springframework.boot:spring-boot-starter-mail' 2. 구글 계정 생성 -> 2차 비밀번호 적용 -> 앱 비밀번호 생성.이메일을 막 보내게되면 계정이 정지될 수도 있으니 새로운 계정으로 하는 걸 추천한다. 계정 생성 후 2차 비밀번호를 적용하면 앱 비밀번호를 생성할 수 있는데 이 앱 비밀번호를 이용해서 메일을 전송할 수 있다. 3. application.yml 설정Gmail SMTP 연결을 위한 설정이다. 위에서 생성한 앱 비밀번호를 password칸에..
CI/CD 툴은 대표적으로 젠킨스가 있지만 젠킨스는 별도의 서버가 필요하는 등 설정이 어렵다. 그래서 규모가 작은 프로젝트에 적합하고 빠르게 구축이 가능한 Github Actions를 선택하였다. Github Actions 플로우Github Actions 빌드 배포 플로우는 Github Actions를 작동시켜서 빌드 결과물 jar 파일을 S3에 전송한다. 그리고 S3에 있는 jar파일을 CodeDeploy가 EC2에 배포 해서 실행 시킨다. 위에서 Github Actions가 CI(지속적인 통합) 역할을 하고 CodeDeploy가 CD(지속적인 배포) 역할을 한다.Github Actions는 프로젝트 소스를 빌드및 테스트코드도 실행시켜 배포하기에 적합한 소스인지 확인 한다. 만약 테스트 코드중 하나라..