반응형

Programming 362

AWS Summit 참석 전, AWS란 무엇인가?

AWS Summit Seoul 2023 참석 전, 사전 지식 공부 1. AWS란? 아마존 웹 서비스(Amazon Web Services, AWS)는 아마존 닷컴에서 개발한 클라우드 컴퓨팅 플랫폼으로 전 세계 클라우드 컴퓨팅 시장에서 1위의 점유율을 차지하고 있는데요. AWS는 컴퓨팅, 스토리지, 데이터베이스와 같은 인프라 기술에서 부터 기계 학습 및 인공 지능, 데이터 레이크 및 분석, 사물 인터넷 등 200개 이상의 기능에 대한 서비스를 제공하고 있습니다. * 기계 학습(machine learning)은 인공지능의 하위 범주로, 컴퓨터 시스템이 패턴과 추론에 의존하여 명시적 지시 없이 학습하도록 지원하는 알고리즘의 연구를 말합니다. AWS에서 제공하는 모든 서비스는 API 중심으로 설계되어 있기 때문에..

Programming/AWS 2023.04.18

무료 ssl 인증서 적용하는 방법(Let's Encrypt)

certbot을 통해 Let's Encrypt에서 제공하는 무료 ssl 인증서 적용하는 방법 ssl 인증서는 클라이언트와 서버 간의 통신을 제3자가 보증해 주는 전자화된 문서인데요. ssl 인증서를 사용함으로써 통신 내용이 공격자에게 노출되는 것을 막을 수 있으며, 통신 내용의 악의적인 변경을 방지할 수 있습니다. 또한 클라이언트는 접속하려는 서버가 신뢰할 수 있는 서버인지를 해당 인증서를 통해 판단할 수 있게 됩니다. /* SSL(Secure Socket Layer)과 TLS(Transport Layer Security Protocol)는 같은 의미인데요. SSL이 표준화기구 IETF의 관리로 바뀌면서 TLS라는 이름으로 바뀌게 되었으며, 아직까지 TLS라는 이름보다 SSL이라는 명칭이 더 많이 사용되..

Programming/Web 2023.04.15

운영체제의 기초 (CPU 스케줄링, 메모리 관리, 디스크 스케줄링)

운영체제의 기초(Foundation of Operating System) 비전공자로 개발 업무를 하며 CS(Computer Science) 전공지식에 대해 공부가 필요하다는 생각을 항상 가지고 있었는데요. KOCW(kocw.net)을 통해 대학교 강좌를 무료로 접할 수 있다는 소식을 알게 되었고, 해당 포스팅은 KOCW에서 제공되는 이화여자대학교 반효경 교수님의 운영체제 강의를 참고하여 정리한 내용입니다. 운영체제란? '운영체제'는 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층으로, 모든 컴퓨터 시스템의 필수적인 부분입니다. 운영체제는 다른 소프트웨어들과는 다르게 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행함으로써 컴퓨터 시스템을 편리하..

MySQL 날짜, 시간 더하고 빼기 및 타임존 변경(DATE_ADD, DATE_SUB, CONVERT_TZ)

MySQL 날짜, 시간 더하고 빼기 및 타임존 변경 mysql에서 날짜 또는 시간을 더하고 빼는 함수인 'DATA_ADD', 'DATA_SUB'와 타임존을 변경할 때 사용되는 'CONVERT_TZ' 함수에 대한 사용법을 정리한 내용입니다. 0. time zone 확인 SELECT @@time_zone, @@system_time_zone; 먼저 위 쿼리를 통해 mysql에 설정된 time_zone 정보를 조회하였습니다. time_zone이 SYSTEM으로 설정되어 있다는 것은 별도의 타임존이 설정되어 있지 않다는 것이며, 시스템의 타임존을 사용하겠다는 것인데요. 해당 테스트 환경에 설정된 mysql의 time zone은 KST(Korea Standard Time)이라는 것을 알 수 있습니다. 1. DATA..

Programming/MySQL 2023.04.07

Spring Security + OAuth2 + JWT 소셜 인증 구현(google, kakao, naver)

스프링 부트 security + oauth2 + jwt 소셜 인증 구현 코드 문득 security, oauth2를 사용한 소셜 인증을 제대로 구현해 본 적이 없다는 생각이 들어 구현하며 정리한 내용입니다. 소셜 인증의 경우 많은 애플리케이션에서 사용되는 기능이기 때문에 내용을 잘 파악해 두면 좋다고 생각되는데요. 기능을 구현하며 oauth에 대한 개념 및 oauth2-client의 내부적인 동작 원리에 대한 부분도 궁금하여 포스팅으로 정리해 보았으며, 하나의 포스팅에 모든 내용을 담기는 사실상 어렵기 때문에 아래 포스팅을 참고하시어 해당 코드를 보면 조금 더 이해하기 쉬울 것으로 생각됩니다. (oauth2에 대한 내용으로 대부분 구성되어 있으며 jwt에 대한 내용도 생략되었습니다. jwt에 관련 내용도 ..

스프링 부트 멀티 모듈 프로젝트 생성(gradle)

Spring Boot Multi-Module Project(Gradle) 지난번 spring boot multi-module project 생성하기(maven)에 이어 이번에는 'gradle'을 사용한 멀티 모듈 프로젝트 생성 방법에 대해서 살펴보겠습니다. multi module project를 적용하는 가장 큰 이유는 하나로 운영하던 서비스가 클라이언트 서비스와 운영 시스템 등, 여러 개로 나뉘는 경우가 발생했을 때 각각의 프로그램에 있는 domain의 동일성을 보장하기 위한 것인데요. 멀티 모듈 프로젝트는 무엇인지, 멀티 모듈 프로젝트를 적용하는 이유와 장점에 대한 내용은 아래 포스팅을 참고해 주시면 좋을 것 같습니다. (maven 빌드툴로 구성된 프로젝트에서 multi module project를 ..

Java Enum 타입 데이터베이스 저장 형식은 뭐가 좋을까? (enum, varchar, tinyint)

Java Enum Type 데이터 DB 저장 형식 (enum, varchar, tinyint) 해당 내용은 데이터베이스 설계 과정에서 Java Enum 타입의 데이터는 어떤 형식으로 저장되는 것이 좋은가에 대해 고민하며 정리한 내용입니다. 실제로는 'varchar'와 'tinyint' 사이에서 고민했으나, mysql의 경우에는 'enum' 타입도 존재하기 때문에 mysql enum 타입에 대해서도 함께 비교하였습니다. enum을 함께 비교하기는 하였지만 mysql의 enum 타입은 여러 이유로 인해 많이 쓰이지는 않는데요. 아래 내용에서는 mysql enum 타입의 특징과 쓰이지 않는 이유에 대해 간단하게 살펴보고 이어서 enum, varchar, tinyint 각각의 타입에 대해 실제 데이터를 넣고 조..

리눅스 서버 시간 확인 및 설정 방법 (linux timedatectl 명령어)

linux timedatectl 명령어를 통한 리눅스 서버 시간 확인 및 설정 리눅스 서버에서 시스템 시간 및 해당 설정을 확인하고 변경해야 할 일이 있어 찾아보며 정리한 내용입니다. linux에서는 timedatectl 명령을 사용하여 현재 시간, 날짜 및 시간대(timezone) 설정을 확인 및 변경할 수 있는데요. 아래 내용을 통해 사용되는 명령어들에 대해서 살펴보겠습니다. (timedatectl 명령어는 CentOS 7부터 사용할 수 있습니다.) 1. 서버 시간 및 설정 확인 # timedatectl # timedatectl status timedatectl 또는 timedatectl status 명령어를 통해 시스템에 설정된 시간 및 시간 설정을 확인할 수 있습니다. 여기서 Local time의..

Programming/Linux 2023.03.30

Spring Boot OAuth2-Client 내부적인 동작 과정

스프링 부트 OAuth2-Client 내부적인 동작 과정 스프링 부트 2.x 버전으로 올라오며 oauth를 연동하는 방법이 크게 변경되었는데요. 아래 내용은 spring-boot-starter-oauth2-client 라이브러리를 적용하여 소셜 로그인(google, naver, kakao)을 구현하는 과정에서 내부적인 동작 과정에 대한 궁금증으로 찾아본 내용입니다. /* 기존(1.5 버전)에서는 'org.springframework.security.oauth:spring-security-oauth2' 라이브러리를 사용하였다면, 2.x 버전부터는 'org.springframework.boot:spring-boot-starter-oauth2-client' 라이브러리를 사용합니다. */ OAuth 2.0의 경..

OAuth, OAuth2 개념과 동작 방식 정리

OAuth, OAuth2 개념과 동작 방식 정리 Spring Security + OAuth2를 통한 소셜 로그인을 구현하던 중, oauth의 개념과 이론적인 동작 방식에 대해서 자세하게 알고 싶어 정리한 내용입니다. 1. OAuth, OAuth2.0 이란? 위키백과에 따르면 'OAuth(Open Authorization)'는 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준인데요. 사용자의 아이디와 비밀번호 없이 접근 권한을 위임받을 수 있다는 것은, 로그인 및 개인정보 관리 책임을 'Third-Party Application(google, kakao, n..

Programming/Web 2023.03.22
반응형