전체 글 84

[국내] 제주도 2박3일 여행기

회사 휴가 기간 동안 2박 3일로 제주도를 가기로 결정했다. 그 기간에 구경했던 곳들을 살짝 정리하려고 한다. ㅎㅎ평일 화-목으로 정했더니 비행기, 숙소 값이 매우 저렴해서 좋았다. 그리고 렌트카로 7인승 싼타페로 정했는데 큰 차 운전 연습이 필요해서였고 이 결정은 너무 잘했다고 생각한다.예전에 친구들과 서쪽 애월 지역에 갔었기 때문에 이번엔 동쪽 함덕 지역에 숙소를 잡고 동쪽 위주로 쭉 돌았다.첫째날은 숙소에 도착하고 시간이 애매해서 저녁 먹고 바로 숙소에서 쉬기만 했다.둘째날부터 본격적으로 움직였는데 숙소 바로 앞에 "함덕 해수욕장" 이 있어서 바로 들렸다. 그리고 근처에 서우봉이 올레길 19코스로 있어서 정상까지 올라보기로 했다. 그리고 어딜 가지 고민하다가 성산 일출봉이 동선상 괜찮을거 같길래 가..

Travel 2025.04.26

[DesignPattern] GoF 23가지 디자인 패턴

GoF(Gang of Four) 디자인 패턴은 소프트웨어 설계에서 자주 발생하는 문제들을 해결하기 위해 제시된 23가지의 디자인 패턴이다. 1. 생성(Creational) 패턴 - 객체 생성 관련객체 생성 로직을 캡슐화하여 유연하고 재사용 가능하게 만드는 패턴 1) Singleton- 오직 하나의 인스턴스만 존재하도록 보장2) Factory Method- 객체 생성을 서브 클래스에 위임하여, 상위 클래스에서는 어떤 객체가 생성될지 모르게 함- ex. 인터페이스 기반 객체 생성3) Abstract Factory- 관련 있는 객체들을 하나의 팩토리에서 생성4) Builder- 복잡한 객체를 단계별로 생성5) Prototype- 기존 객체를 복제하여 새 갳체 생성 2. 구조(Structural) 패턴 - 클래..

IT/DesignPattern 2025.04.21

[기타] SEO(Search Engine Optimization, 검색 엔진 최적화)란?

출시한 플랫폼의 사용성을 높이기 위한 방법 중 하나로 SEO(Search Engine Optimization) 이라는 것이 있다.이 SEO 의 정의, 목적, 주요 요소 등에 대한 정리 글을 쓰고자 한다. 1. 개념- 웹사이트나 웹페이지가 검색 엔진에서 더 높은 순위에 노출되도록 최적화하는 작업 2. 목적- 검색 엔진에서 자연스러운 트래픽을 늘리는 것- 검색 결과 상위 노출을 통해 브랜드 인지도, 방문자 수, 전환율 증가 3. 주요 요소1) On-page SEO (내부 최적화) - 웹사이트 내부의 콘텐츠와 구조를 최적화하는 작업 > 키워드 최적화 : 제목, 본문, 메타태그에 적절한 키워드 사용 > 메타 태그 작성 : , 등 검색엔진에 노출되는 내용 > 헤더 태그 구조화 : , 등으로 ..

IT/CS 2025.04.20

[CS] 쓰레싱(Thrashing) 이란?

쓰레싱에 대한 개념, 발생 원인, 이를 방지하기 위한 메모리 관리 전략에 대해 정리하고자 한다. 1. 개념- 운영체제에서 과도한 페이지 교체가 발생하면서, 실제 작업은 거의 수행되지 않고 대부분의 시간과 자원이 페이지 교체에 소비되는 현상으로, 주로 가상 메모리를 사용하는 시스템에서 발생한다. 2. 발생 원인- 과도한 다중 프로그래밍 > 너무 많은 프로세스를 동시에 실행시키면 각 프로세스가 필요한 만큼의 메모리 확보를 하지 못한다. > 그 결과 페이지 결함이 빈번하게 발생하고, 디스크 I/O 가 증가하면서 성능이 저하된다.- Working Set 크기보다 적은 프레임 할당 > 각 프로세스는 일정 시간 동안 자주 참조하는 Working Set 이 있는데, 이 크기보다 적은 메모리를 할당 받으면 계속..

IT/CS 2025.04.19

[MSA] MSA(Micro Service Architecture) 전환기

회사 서비스를 Monolithic 에서 MSA 형태로 아키텍처 변경 과정에 있다. 이때 추가 및 변경된 개념에 대해 정리하고자 한다. 1. eureka-server- 환경 설정implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server' 2. api-gateway- 환경 설정implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'implementation 'org.springframewo..

[기타] SSO(Single Sign On) 이란?

회사에서 SSO 를 구현하는 단계에 있는데, 마침 개념 정리를 같이 하면 좋을 것 같아 글을 기술한다. 1. 정의- 사용자가 한 번의 로그인으로 여러 애플리케이션이나 시스템을 이용할 수 있도록 하는 인증 방식 2. 주요 개념- 인증(Authentication, 신원 확인) 과 인가(Authorization, 권한 확인) 의 분리- 토큰 기반 인증- 중앙 인증 서버(CAS, Center Authentication Server) 3. 장점- 사용자 편의성 증가 (한 번 로그인하면 여러 시스템에 다시 로그인할 필요 없음)- 보안 및 관리 효율성 강화 (중앙 집중식 인증 관리로 보안 정책 적용 용이) 4. 단점- 단일 장애점(Single Point Of Failure, SPOF)  > 중앙 인증 서버가 다운되면..

[React Native] 모바일 초보자의 트러블 슈팅

React Native 를 더 쉽게 사용할 수 있도록 해주는 프레임워크 및 개발도구인 Expo 를 사용하여 간단한 모바일 앱을 만들고 출시하게 되었다. 이 과정에서 있었던 트러블 슈팅 내용을 기록하려고 한다. 1. 폰트 적용- 현상 > 정해진 폴더에 적용하고자 하는 폰트 파일을 위치시킨 후, 해당 앱에서 폰트를 적용하려고 했으나 생각한대로 되지 않았다. - 해결 방법// App.js 파일에서,import { createContext } from 'react';import { setCustomText } from 'react-native-global-props';const ThemeContext = createContext({ fontFamily: 'concon',});export default f..

IT/Front-End 2025.03.30

[CS] 객체 지향 설계 5가지 원칙 - SOLID

객체 지향 설계에서 사용하는 5가지 원칙에 대해 각각 정리하고자 한다. 1. 단일 책임 원칙 (SRP, Single Responsibility Principle)- 설명 : 클래스는 단 하나의 책임만 가져야 한다.- 의미 : 하나의 클래스가 하나의 기능만 담당해야 하며, 변경이 필요한 이유가 오직 하나여야 한다.  2. 개방-폐쇄 원칙 (OCP, Open/Closed Principle)- 설명 : 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.- 의미 : 기존 코드를 수정하지 않고 기능을 확장할 수 있도록 설계해야 한다. 3. 리스코프 치환 원칙 (LSP, Liskov Substitution Principle)- 설명 : 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.- 의미 : 부모 클래..

IT/CS 2025.03.16

[DesignPattern] Singleton 패턴

디자인 패턴 중 가장 유명한 것 중 하나인 Singleton 패턴에 대한 정리 글을 작성하고자 한다. 1. 정의- 특정 클래스의 인스턴스를 오직 하나만 생성하도록 보장하는 디자인 패턴 2. 특징 (장단점)- 유일한 인스턴스 보장  > 하나의 객체만 생성되고 공유된다.- 전역 접근 가능  > 어디서든 동일한 객체를 참조할 수 있다.- 메모리 절약  > 불필요한 객체 생성을 방지하여 메모리 낭비를 줄인다.- (전역 상태를 가지므로) 테스트가 어려움  > 싱글톤 객체가 공유되므로 테스트 중 상태를 초기화하기 어렵다.- 멀티스레드 환경에서 동기화 문제 발생 가능- 의존성이 높아져 유지보수가 어려울 수 있음 이외에도 다른 디자인 패턴(예를 들면, 팩토리 메서드 패턴 등)이 많이 있는데, 차례대로 정리하도록 하려고..

IT/DesignPattern 2025.03.16

[Redis] ReactiveRedisTemplate 를 활용한 데이터 동기화 문제 해결의 건

회사에서 Redis 를 활용한 기능을 개발했는데, 그 기능은 같은 화면을 동시에 조회하는 사용자 수가 몇 명인지 확인하는 것이었다.쇼핑몰을 이용하다 보면 "X 명이 보고 있습니다." 등의 내용을 확인했던 기억이 있어서, 레퍼런스 자료로 쇼핑몰 플랫폼의 기술블로그를 활용했다. 그렇게 전체적인 틀을 잡아갔는데 데이터 동기화 측면에서 문제가 발생했다.화면을 떠나 더 이상 조회하지 않는 사용자가 있는데 Redis 의 데이터에는 아직 남아 있어 실제 상황과 일치하지 않는 문제가 있었다.그런데 Redis 데이터의 만료 시간을 따로 설정하지 않았기 때문에 이러한 불일치가 발생하면 수정할 수 없는 상황이었다. (필자의 경우엔 데이터의 만료 시간을 설정하면 그것대로 이슈가 생기기 때문에 설정하지 않았다.)이때 화면을 떠..

IT/Redis 2025.02.24