반응형

전체 글 51

[Concept | Auth] 회원인증 플로우 정리 (1) - 회원가입 (SignUp)

3계층 구조의 서버환경에서 회원가입 플로우를 정리한다.> 작성일 : 2025-01-10> Cloud : AWS  전체 플로우User(Browser) : 사용자가 브라우저를 통해 접근Frontend : 프리젠테이션 (Client Tier)Backend : 비즈니스 로직 (Application Tier)Database : 데이터 (Data Tier)AWS SNS : 이메일을 통해 사용자 인증   상세 사용자 가입 요청브라우저를 통해서 가입폼이 전달된다.Frontend : 사용자에게 가입진행 화면을 제공 가입 API 호출입력정보가 전달되어 유효성 체크Frontend : API 호출Backend : DB를 통해 가입정보의 유효성을 체크 회원가입 실패 처리유효성 체크 실패시 또는 기타 에러에 대한처리Backend..

Concept 2025.01.10

[Tip | Linux] Can't create/write to file ... (Errcode: 28 - No space left on device)

Can’t create/write to file ‘/mysql/tmp/ibSAi4kh’ (Errcode: 28 – No space left on device)> 작성일 : 2016-07-04> OS : CentOS  문제상황여러 사이트를 운영중인 서버에서 mysql이 stop 되어 start를 시도 하였으나 다음과 같은 에러가 발생하며 시작되지 않았다.Can't create/write to file '--/mysql/tmp/ibSAi4kh' (Errcode: 28 - No space left on device)InnoDB: Error: unable to create temporary file; errno: 28InnoDB: Assertion failure in thread 140119057037088 i..

Tip 2025.01.10

[Tip | Tomcat] Several ports ... already in use.

Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.> 작성일 : 2017.03.31> OS : Windows7  문제상황개발중 비정상적인 was 종료로 인해 다음과 같은 에러와 함께 재시작 되지 않는다. 실 운영환경에서도 이런경우가 있다.Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To ..

Tip 2025.01.09

[Source | MySQL or MariaDB] 데이터베이스 백업설정 및 데이터 이관

데이터베이스를 주기적으로 파일로 백업하고 관리하는 과정을 정리한다.> 작성일 : 2017-09-27 쉘스크립트 파일을 작성한다.vi {저장경로}/Backup.sh#!/bin/bashtoday=`date +%Y%m%d`deleteDay=`date +%Y%m%d -d '-[백업파일보존일수]days'`backupDirectory="[파일저장경로]"dbList='[데이터베이스1] [데이터베이스2]'### create Folder ###echo "createDay : "$today/bin/mkdir -p ${backupDirectory}/${today}_allcd ${backupDirectory}/${today}_allecho "OK"### backup Project ###for db in $dbList; do ..

Source 2025.01.09

[Source | Javascript] AES256 암호화 / 복호화

crypto-js 를 활용한 암호화 / 복호화 코드를 정리한다.> 작성일 : 2023-04-06  설치https://www.npmjs.com/package/crypto-jsnpm install crypto-js   Key / IV 정의의const encKey = 'opendocsdocs20230626abcdefghij!@'; // 32Byteconst encIV = 'opendocsdocs2023'; // 16Byte   AES256 암호화 / 복호화 함수const encAES = (str, key, iv) => { const cipher = Crypto.AES.encrypt(str, Crypto.enc.Utf8.parse(key), { iv: Crypto.enc.Utf8.parse(iv), ..

Source 2025.01.08

[Concept | DevOps] 도입

DevOps 문화를 도입하고자 할때의 고려점을 정리한다.> 작성일 : 2025-01-06  문화의 형성조직(개발조직 뿐만이 아닌 전체 참여자)의 소프트웨어 개발 문화를 만들어 간다는 관점에서 접근이 필요하다.# 단순히 어떤 기술을 도입한다는 관점이라면 오히려 독이 될 수 있다.# 여러 부서를 아우를 수 있는 DevOps 팀 구성이 필요하며 권한이 주어져야 한다.# 제품을 잘 만들어 가치를 창출한다는 공동의 목표에서 진행되어야 한다.# 워크플로우가 원활하게 진행되도록 자동화가 잘 이루어져야 한다.# 품질과 성능을 최적화 하기 위해 피드백 및 측정이 지속적으로 이루어져야한다.   이점문화가 잘 형성되고 자동화가 잘 이루어지게 되면 여러 이점을 얻을 수 있다.# 각자 일하지 않고 책임을 공유하여 협업이 원활해..

Concept 2025.01.06

[Concept | DevOps] 라이프사이클

DevOps 라이프사이클의 각 단계를 정리한다.> 작성일 : 2025-01-05  기획사용자 피드백 및 이해관계자 의견을 바탕으로 다음 출시에 포함될 기능(백로그화)을 정의합니다.   개발기획 단계에서 작성된 스토리 및 백로그를 기반으로 기능을 개발합니다.# 테스트 주도개발(TDD), 페어프로그래밍, 코드리뷰와의 결합을 고려합니다.# 내부 정책에 따라 개발테스트를 수행합니다.   빌드개발된 코드를 테스트 가능한 형태로 빌드합니다.# 이부분은 개발테스트가 완료되고 코드가 배포되면 수행됩니다.# 코드의 병합, 컴파일, 단위테스트, 패키징이 자동으로 이루어 집니다.   테스트개발과 릴리즈 사이에서 요구사항을 충족하는지 테스트 합니다.# 테스트 또한 자동화 되기도 합니다.# 여러 형태의 테스트에서 특정요소를 수..

Concept 2025.01.05

[Concept | DevOps] 정의

DevOps란 무엇인지 정리한다.> 작성일 : 2025-01-05  기본정의 개발과 운영에서의 작업을 결합하고 자동화해 개발의 고품질화 및 서비스의 가속화를 이룬다는 개념의 방법론# 도구의 활용과 관행의 정의 필요 (Jira, GitFlow)# 효율성 / 신속성 / 신뢰성의 향상   포괄적정의개발과 운영간 서비스를 가속화 하기 위한 개발 프로세스 및 조직 문화까지를 의미함# 워터폴 (Waterfall) 개발의 문제점(요구사항의 잦은변경)으로 인한 애자일 (Agile) 개발의 등장 - 애자일 : 애플리케이션을 소규모로 빈번히 업데이트하는데 중점을 둠# 애자일 (Agile)의 발전된 형태인 DevOps는 지속적 통합 / 지속적 배포 (CI/CD)를 핵심요소로 함   DevOps 라이프 사이클서비스의 기능개..

Concept 2025.01.05

[Concept | Java] Garbage Collection 종류

Garbage Collection의 종류와 특징을 정리한다.> 작성일 : 2022-03-31  Serial GC- 한개의 스레드가 동작하여 메모리를 해제- 동작이 느리고 Stop The World 시간이 길어 근래에는 사용되지않음- Java 실행시 옵션 : -XX:+UseSerialGC   Parallel GC- Minor GC에서 멀티스레드가 동작하여 메모리를 해제- Serial GC대비 Stop The World가 짧음- Java 8의 Default GC- Java 실행시 옵션 : -XX:+UseParallelGC   Parallel Old GC- Minor GC & Major GC에서 멀티스레드가 동작하여 메모리를 해제- Major GC에서 Mark-Summary-Compact 방식을 사용- 멀티스..

Concept 2025.01.05

[Concept | Java] Garbage Collection 구동원리

JVM에서 메모리가 어떻게 관리되어지는지 이해하기 위해 Garbage Collection (GC) 구동원리를 정리한다. 개발 최적화와 서버 튜닝을 위해 이해하고 있어야 한다.> 작성일 : 2022-03-30  메모리 영역의 구분 Young Generation- 새롭게 생성된 객체는 Eden 영역에 할당된다.- Young Generation에서 발생하는 Garbage Collection을 Minor GC 라 한다. Old Generation- Young Generation에서 계속 사용되고 있다고 판단되는 객체가 Old Generation으로 이동된다.- Old Generation에서 발생하는 Garbage Colleciton을 Major GC 또는 Full GC 라 한다.   Garbage Collect..

Concept 2025.01.05

[Tip | iOS] Device UDID 확인

프로젝트 진행시 모바일 기기(iPhone / iPad)의 고유값인 UDID를 확인해야할 필요가 있다. (예를 들어 애드혹 배포시)iTunes를 사용하여 확인하는 방법을 설명한다.> 작성일 : 2021-02-18  iTunes를 다운받아 설치한다.  모바일 기기가 암호로 잠겨있을 경우 경고창이 보인다. 모바일기기에서 신뢰를 선택한 후 재시도을 클릭한다.  연결이 완료되면 '환영합니다' 메시지의 창이 보이는데 동의를 클릭한다.   연결이 정상적으로 완료되면 아래와 같이 휴대폰 모양의 아이콘이 활성화 된다.  일련번호가 표시된 부분을 UDID가 보일때 까지 클릭한다.  UDID를 확인할 수 있다.

Tip 2025.01.05

[Guide | Test] JMeter를 활용한 서비스 성능 테스트

JMeter를 통해 성능테스트 하는 방법을 정리한다.> 작성일 : 2023-01-09> 테스트클라이언트 : Windows10 + JMeter5.5> 테스트서버 : Ubuntu22.04  아래 사이트에 접속하여 바이너리 파일을 다운로드 하고 압축을 해제한다.https://jmeter.apache.org/download_jmeter.cgiapache-jmeter-5.5.zip 파일 압축해제  JMeter 실행압축해제 폴더/bin/jmeter.bat 실행  Thread Group 추가Test Plan 우클릭 > Add > Threads(Users) > Thread GroupNumber of Threads (users) : 사용자수Ramp-up period (seconds) : 요청 반복주기Loop Count..

Guide 2025.01.05

[Guide | Marketing] 웹사이트 수집 설정 - Google

운영중인 블로그나 사이트가 구글에 수집되어 노출될 수 있도록 설정하는 방법을 정리한다.> 작성일 : 2022-01-27  구글계정에 로그인계정이 없다면 아래메뉴를 통해 생성하고 로그인한다.  Google Search Console 에 접속 & URL 등록https://search.google.com/search-console/about시작하기 클릭URL을 입력하고 계속 클릭① html 파일을 클릭하여 다운로드 받는다.② 서버의 서비스폴더에 저장한다. (https://{입력한 URL}/{html파일} 경로로 접근이 가능해야함)③ 확인을 눌러 등록을 완료한다.   robots.txt 등록 - 수집될 내용에 대한 제한설정User-agent:*Allow:/① 위와같이 robots.txt 파일을 생성한다.②..

Guide 2025.01.04

[Guide | Marketing] 웹사이트 수집 설정 - Naver

운영중인 블로그나 사이트가 네이버에 수집되어 노출될 수 있도록 설정하는 방법을 정리한다.> 작성일 : 2022-01-28  네이버계정에 로그인계정이 없다면 아래메뉴를 통해 생성하고 로그인한다.  Naver Search Advisor에 접속 & URL 등록https://searchadvisor.naver.com/웹마스터 도구 클릭사이트 관리 > 사이트 등록 에서 프로토콜(http or https)을 포함해서 입력① html 파일을 클릭하여 다운로드 받는다.② 서버의 서비스폴더에 저장한다. (https://{입력한 URL}/{html파일} 경로로 접근이 가능해야함)③ 소유확인을 눌러 등록을 완료한다.   robots.txt 등록 - 수집될 내용에 대한 제한설정User-agent:*Allow:/① 위와같..

Guide 2025.01.04

[Guide | Git] 비밀번호 변경

Git 비밀번호 변경방법을 정리한다.> 작성일 : 2022-01-10> OS : windows 10 Pro> Git : GitLab Community Edition 11.11.3  GitLab에 접속하여 비밀번호를 변경Settings > Password 메뉴에서 현재 비밀번호 / 변경할 비밀번호를 입력한다.  비밀번호 변경 후 클라이언트 접속시 에러발생비밀번호 변경 후 아래와 같은 에러가 발생한다.remote: HTTP Basic: Access deniedfatal: Authentication failed for 'https://-----------------'  관리자 권한 콘솔을 실행하여 리셋명령 프롬프트 우클릭 > 관리자 권한으로 실행git config --system --unset credenti..

Guide 2025.01.04

[Guide | App - Android] React Native Android Release 배포

하이브리드앱을 빌드하고 배포하는 과정을 정리한다.> 작성일 : 2021-08-22> OS : macOS Big Sur 버전 11.5> CPU : Intel  KeyStore 생성cd {UserHome}/{AppPath}/android/appkeytool -genkey -v -keystore opendocs_music-release-key.keystore -alias opendocs_music_key -keyalg RSA -keysize 2048 -validity 10000   빌드설정android/gradle.properties 파일에 환경변수 설정OPENDOCS_MUSIC_RELEASE_STORE_FILE=opendocs_music-release-key.keystoreOPENDOCS_MUSIC_RELE..

Guide 2025.01.04

[Guide | App - iOS] 앱개발시 테스트환경 구축

배포환경 구축의 중요성과 iOS환경에서 사내배포하는 방법에 대하여 정리해보자.> 작성일 : 2019-08-17> 수정일 : 2025-01-03 앱개발이 완료되면 버그 및 개선사항을 이슈화하고 수정하기 위해 사내배포가 필요하다.수정 -> 배포 -> 수정 -> 배포 -> 수정 -> 배포 -> 수정 -> 배포 ...> 한번에 수정하고 완료된다면 이상적이겠지만 대부분의 경우 수정과 배포를 여러번 반복하게된다.> 배포절차를 정리하고 자동화가 필요한 이유이다. iOS의 경우 단순히 빌드파일(.ipa)로 사내배포가 불가하고 다음 4가지 방법으로 정리된다.   디바이스를 직접 맥에 연결하여 빌드여러기기에서 테스트를 해야하는 경우 번거롭다.   AdHoc 배포 ('특별한 목적을 위해서'라는 뜻의 라틴어)기기의 UDID를..

Guide 2025.01.04

[Source | Java] DB 부하를 줄이기 위한 MyBatis 쿼리캐싱 기능

거의 바뀌지 않거나 고정된 값을 디비에서 자주 쿼리해야할 경우가 있다. 이때 마이바티스에서 제공하는 쿼리캐싱 기능 사용법을 알아보자.> 작성일 : 2021-04-06> 수정일 : 2025-01-02공식문서에 잘 설명이 되어있다.- https://mybatis.org/mybatis-3/ko/sqlmap-xml.html#cache  캐싱적용시 고려해야하는 사항들* flush / set 하는 시점을 명확히 정의 해야한다.--> 단순히 부하를 줄인다고 여기저기 사용했다가 갑자기 이상한 데이터로 에러가 발생할 수 있고 추적 또한 어렵다.* 마이바티스의 경우 쿼리 단위로 캐싱을 해줘 문제가 되지 않지만 Redis나 Memcached, ehcache등을 사용한다면 값저장시 키값을 잘 정의해야한다.--> 보통 키값에 ..

Source 2025.01.03

[Source | MySQL or MariaDB] 데이터베이스 생성 및 접속 설정

데이터 베이스를 MySQL / MariaDB로 선택하여 프로젝트를 진행할 경우 디비생성 및 접속권한을 부여하는 방법을 정리한다.> 작성일 : 2021-02-23> 수정일 : 2025-01-02 데이터베이스 생성create database {디비명} collate '{문자셋}';# Ex)create database ProjectDB collate 'utf8_general_ci'; 사용자 추가create user '{사용자ID}'@'{접속IP}' identified by '{비밀번호}';# Ex)create user 'opendocs'@'localhost' identified by 'passOpd'; 권한부여 및 적용# 권한부여grant all privileges on {디비명}.* to '{사용자ID}'@..

Source 2025.01.03

[Concept | Architecture] 3Tier

1티어 / 2티어 / 3티어의 개념과 장단점을 정리한다.> 작성일 : 2021-02-22> 수정일 : 2025-01-02시스템 설계시 프로젝트의 목적에 따라 물리적인 계층(Tier)을 나누고 서비스를 논리적(Layer)으로 분리하게 된다.효과적인 분업을 위해 반드시 이해가 필요한 부분이다.# Tier (계층) : 물리적인 분리단위 (서버 분리)# Layer (층) : 논리적인 분리단위 (기능 분리) 1Tier# 장점 : 구현이 간편함, 비용이 적게듬# 단점 : 확장이 힘듬, 이관시 재구성이 필요함, 분업이 어려움 2Tier# 장점 : 데이터관련 변경이 용이함# 단점 : 3Tier에 비해 유연성이 떨어짐 3Tier# 장점 : 다른계층에 의존하지 않으므로 분업시 효율적임# 단점 : 구현시 고려사항이 많아 비..

Concept 2025.01.02
반응형