분류 전체보기 133

우리 팀의 코드 품질 향상을 위한 Code Review - 홍승환

코드 리뷰의 도입이 힘든 이유 그럴 시간 없다 좋은게 좋은거지 비난이나 공격 코드 리뷰 왜 해야지? 제품 품질 - 잠재 오류를 사전에 발견 Bus Factor 최소화 - context sharing을 통한 엔지니어 가담 가능성 상승 업무 효율화 - 서로 다른 코딩 컨벤션부터 전반적인 설계 원칙까지 점직적으로 싱크 두 가지 방향에서의 노력 (받는 사람, 하는 사람의 노력) 받는 사람 Git을 똑바로 사용하자. 팀 내 Branch 관리 전략 준수 Commit Convention 지정하기 Conventional Commits 리뷰 받을 준비가 된 PR을 만들자. CI 파이프라인이 통과됐는가? Formatter, Type checker, unit test 리뷰 가능한 크기인가? 적절한 리뷰어 설정했는가? 개인별..

Public Key Retrieval is not allowed 오류

Mysql 8.0 버전이고 해당 오류가 발생한다면 다음과 같은 옵션을 확인해야한다. useSSL : DB에 SSL로 연결 allowPublicKeyRetrieval : 서버에서 RSA 공개키를 검색하거나 가져와야하는지 useSS=false라고 작성한다면 allowPublicKeyRetrival=true 해줘야한다. 해당 사이트에 따르면 ssl mode는 default 값이 “Use SSL if the server supports it”이다. ALLOW Public Key Retrieval은 default 값으로 false가 되어있다. 공식 문서 If the user account uses sha256_password authentication, the password must be protected du..

시간 기준 변경 (LocalTimeZone → UTC)

현재 우리 서비스는 LocalTimeZone을 사용하고 있는데 UTC 표준을 사용하기로 하고 해당 구현을 변경하고자 한다. 이유를 다음 3가지다. 물론 우리 서비스가 글로벌 서비스는 아니지만 시간 표준을 맞출 필요가 있었다. AWS 서비스를 사용할 때 UTC 표준 시간을 사용하지 않으면 서비스를 사용할 때 귀찮음이 있을 수 있다는 피드백을 받았다. UNIX Time을 이용하면 프론트엔드에서 day.js 라이브러리를 이용해서 ‘몇 분 전’, ‘몇 일 전’을 쉽게 표현할 수 있다. 먼저 mysql db 기본 시간 설정 값을 확인해준다. SELECT @@global.time_zone, @@session.time_zone; time_zone 값이 UTC로 설정되어 있는 모습. 이제 스크랩을 추가할 때 시간을 L..

CS/DB 2023.08.28

Docker

3회차 - 도커 컨테이너 살펴보기 핵심키워드 - 컨테이너, 컨테이너 이미지 - docker demon, docker hub - 컨테이너 동작방식 VM vs Container VM을 통해 서비스하는 것도 가능하다. 하지만 각각의 VM마다 GUEST OS를 설치해 사용해야 하기 때문에 무겁다. 서버를 유지하는 것 자체가 비용. 트래픽에 따라 필요한 서버를 빠르게 내리고 올려야하는데 VM은 무겁기 때문에 빠르게 적용시키기 어렵다. 컨테이너를 사용하게 되면 OS는 HOST OS를 공통으로 사용. 애플리케이션에 필수적인 정보들만 Base Image를 통해 제공받고 그 위에 앱을 구동시키기 때문에 가볍다. 하지만 공통의 HOST OS를 공통으로 사용하기 때문에 보안 문제가 있다. 컨테이너 동작방식 docker h..

AWS 서비스

1. EC2 (Amazon Elastic Compute Cloud) - 가상 서버 인스턴스 생성 및 관리 - 웹 어플리케이션, 데이터베이스 2. S3 (Simple Storage Service) - 객체 스토리지 서비스 - 데이터 무결성 검사, 데이터 암호화, 접근 제어 및 인증 등의 보안 기능 제공 - 데이터 백업, 복원 및 저장소 분석 기능 제공 - 웹 사이트 호스팅, 백업 및 복원 3. RDS (Relational Database Service) - 관리형 관계형 데이터베이스 서비스 - Mysql, PostgreSQL - 그냥 EC2에 그냥 구현하자. 4. Lambda - 서버리스 컴퓨팅 서비스 - 어플리케이션 빌드 및 배포, 백그라운드 작업 5. DynamoDB - 관리형 NoSQL 데이터베이스 ..

Catalog-service 구현 중 테이블 생성이 안되는 이슈 발생 (미해결)

현재 yml 파일 server: port: 0 spring: application: name: catalog-service rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest cloud: config: name: ecommerce config: import: optional:configserver:http://localhost:8888 h2: console: enabled: true settings: web-allow-others: true path: /h2-console datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:test jpa: hibernate: ddl-auto..

Spring boot에 JKS파일 정보만 입력했는데 어떻게 암호화, 복호화가 둘 다 될까?

비대칭키 암호화 방식에서는 공개키는 데이터를 암호화할 때 사용되며, 개인키는 암호화된 데이터를 복호화할 때 사용된다. 그런데 Spring boot yml파일에 JKS파일 정보만 입력했는데 /encrypt api를 통해 암호화된 값을 얻어올 수 있다. 어떻게 가능한 것인가? JKS 파일은 공개키와 개인키를 함께 저장하는 파일이다. 보통 공개키와 개인키가 쌍으로 저장되어 있으며, 이 쌍은 같은 alias로 식별된다. 스프링 부트에서는 key-store와 key-alias 설정을 통해 JKS 파일의 위치와 인증서/개인키 쌍의 alias를 설정할 수 있다. keytool -list -v -keystore -storepass 실행 결과에서 'Entry type: PrivateKeyEntry' 라는 문구가 있으면,..

Spring Security 적용

애플리케이션에 spring security jar을 Dependency에 추가 WebSecurityConfigurerAdapter를 상속받는 Security Configuration 클래스 생성 @EnableWebSecurity 추가 Authentication -> configure(AuthenticationManagerBuilder auth) 메서드를 재정의 Password encode를 위한 BCryptPasswordEncoder 빈 정의 Authorization -> configure(HttpSecurity http) 메서드를 재정의 1. Dependency 추가 org.springframework.boot spring-boot-starter-security 2.5.14 WebSecurityConf..

암호화 처리를 위한 Encryption과 Decryption

Encryption types 1. Symmetric Encrption (Shared) - Using the same key 2. Asymmetric Encryption (RSA Keypair) - Private and Public Key - Using Java keytool 자바 1.8 이하인 환경에서는 Java Cryptography Extension (JCE) 설치 필요. => 압축 해제 후, local_policy.jar, US_export_policy.jar 두 개의 파일 jre/lib/security 폴더로 복사 Symmetric Encryption 구현 방법 Config Server 'starter-bootstrap' Dependency 추가 bootstrap.yml 파일 encrypt.ke..

curl이란?

1. curl이란? - 웹 서버와 통신하는 방법이 필요했고 curl이 개발됐다. - curl은 cli를 통해 데이터를 전송하고 받는 도구입니다. url을 통해 서버에 요청을 보내고, 응답을 받아오는 기능을 수행한다. - 다양한 프로토콜을 지원하며, HTTPS, FTP, SMTP 등 다양한 프로토콜을 이용하여 데이터를 전송할 수 있다. 2. curl 기본 사용법 curl [옵션] [URL] '-X'은 HTTP 메소드를 설정 '-H'는 HTTP 헤더를 설정 '-d'는 리퀘스트 바디를 설정 '-o'는 응답 결과를 파일로 저장 '-F'는 파일 업로드 '-u'는 인증 정보 설정 '-b', '-c'는 쿠키 설정 3. curl을 이용한 기능 - curl을 이용하여 파일 업로드, 다운로드, SSL 인증서 검증, 쿠키 ..