목록분류 전체보기 (13)
Youn's IT Memo
발단 최근에 맡게 된 레거시 프로젝트에서는 DB 동기화의 필요성을 느끼게 되었습니다. 오라클의 패키지 & 프로시저로 구성된 환경이었기 때문에 프로젝트 팀원들 간의 작업 환경 통일성과 각자의 로컬에서 작업을 지원하기 위해서는 DB의 일관성이 필수적이었고, 이에 따라 Oracle Docker Image를 활용하여 동기화하는 방안을 모색하게 되었습니다. 요약 레거시 프로젝트에서 DB 동기화를 위한 프로세스를 정리하고자 합니다. 프로젝트 팀원들의 효율적인 협업과 작업 환경 통일성을 제공하기 위해 Oracle Docker Image를 사용하여 DB를 동기화하는 방법에 대해 정리해보겠습니다. https://github.com/oracle/docker-images Process 1. 패키지 구조 정립 오라클 이미지의..
Summary 오늘 CS 관련 영상을 여러개 보다가 Mutex와 Semaphore 관련된 영상을 보게 되었습니다. 대학교 시절에 운영체제 수업을 들을때 배웠지만 다시 새롭게 들으면서 잊고 있던 부분을 상기시킬수 있었던 좋은 시간이었습니다. 그래서 제가 쓰는 자바에서는 어떻게 동기화 로직을 어떻게 지원하는지 궁금해졌습니다. 따라서 오늘은 Oracle Docs를 통해 자바에서 어떻게 지원하는지 살펴보고 정리해보겠습니다. Oracle Docs Url https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.4 Chapter 17. Threads and Locks class A { final int x; A() { x = 1; } int f() ..
Summary 정리하지 않았던 Cloud Native 관련 정보들을 취합해서 글을 작성해보았습니다. 아키텍처를 추상적으로 알았던 부분을 다시 정리해보고 공부해보면서 미처 몰랐던 부분이 많았던거 같습니다. 나중에는 잊어먹을거 같아서 기록으로 남겨둡니다. Cloud Native 클라우드 네이티브 재단 (CNCF)는 클라우드 네이티브를 다음과 같이 설명하고 있습니다. 클라우드 시스템 (분산 컴퓨팅) 을 이용해 수평적인 확장과 느슨한 결합도를 가지는 시스템을 개발하도록 합니다. 이런 시스템이 왜 등장하게 되었는지 잠시 생각해보았습니다. 그리고 아래의 마이크로 소프트 페이지에서 제가 생각했던 부분과 일치했던 부분을 찾을 수 있었습니다. 유저 풀이 점점 넓어지면서 규모가 커지면 자연스럽게 사용자 요구사항도 늘어나게..
Summary 최근 게시판 작업을 진행하면서 로그를 남기는 여러가지 방법을 찾던 와중에 트리거를 발견하게 되었습니다. 기존에 트리거를 실무에선 잘 못본 것 같아서 이번에 구현해보고 실습해보았습니다. 트리거 사용 전 사전 설계 트리거를 이용해 주문 입력시 물품의 재고개수를 하나 줄이고 로그를 추가해보는 로직을 구상하였습니다. 제작하기 전에 사용할 간단한 DB테이블 설계를 진행하였습니다. 주문과 물품이 1:1로 연결되어 있고 로그는 따로 설정되어 있는 DB 로직입니다. 데이터베이스는 MySql 로 진행하였습니다. 테이블 생성 위에 설계된 주문 물품에 대한 테이블을 생성하였습니다 create table `order` ( id serial primary key , product_id bigint, name va..
Summary Java 21이 LTS가 되면서 향후 어떤 기능이 들어가는지 지속적으로 살펴보던 중 가장 실무에 사용하기에 적합한 부분이 있는거 같아서 글을 남겨봅니다. 동기 부여 모든 Java 개발자가 공통적으로 느끼는 부분으로 String 쓰는 방식이 참으로 불편하다는 느낌이 듭니다. 아래의 예시처럼 작성된 경우가 대다수 였던거 같습니다. +를 통한 문자열 연결 String line = "hello " + number + "번 유저님"; StringBuilder나 Buffer를 이용한 문자열 연결 StringBuilder line = new StringBuilder().append("hello ") .append(number) .append("번 유저님"); StringFormat String line..
진행 전 Container SSH 설정 SSH 접속을 위해 VM 혹은 Container에 사전 설정을 진행하고 접속을 확인해봄 SSH Key를 사전에 교환하는 작업 등이 필요 ( ssh-keygen ) Ex) ssh root@172.17.0.2 -p 22 Process 1. 플러그인 설정 플러그인에서 SSH 플러그인을 다운로드 ( Publish Over SSH ) 2. SSH Server 세팅 젠킨스 시스템 설정에 SSH Server를 추가하는 작업을 진행 하단에 Publish Over SSH 추가 접속할 서버 내용 추가 ( Ex. HostName - IP, Username - root ) 고급 옵션내 Password, Port 추가 3. 상세 설정 기본적인 Build 과정은 생략. SSH를 통한 배포 ..
Summary 제가 쓰는 Java와 기본적인 것은 비슷한 경우가 많았습니다. 하지만 따로 정리가 필요한 경우 있어 정리가 필요해 보였습니다. 1. Immutability (불변성) 기본적으로 Rust는 불변성을 기반으로 합니다. 값을 변경할때 mut를 붙여 값을 변경하도록 합니다. let mut val:i8 = 3; 2. Shadowing 불변성을 유지하면서 타입과 값을 변경하고 동일한 변수를 사용하도록 합니다. 개인적으로 Mut와 기능적으로 비슷한 것 같지만 값을 계속 갱신시켜 나가면서 진행 let white_spaces = " "; let white_spaces = white_spaces.len(); 3. 스칼라 타입 1. 정수형 정수 값을 지원하는 데이터 타입 특이점 : Unsigned, 정수형 크..
왜 시작했는가? Java 처럼 GC를 이용해서 메모리가 Managed 되는 언어가 아닌 Un-Managed되는 언어를 하나 사용해보고 싶습니다. 하지만 예전처럼 C나 C++이 아닌 새로운 언어를 배워보고 싶은 마음에 고심 끝에 Rust를 선택했습니다. Rust의 경우 어떻게 보면 소유권 개념을 통해 매니징 되고 있다고 생각은 들지만 문법이나 개념 등이 특이하여 매력적이라는 생각이 들어 공부하게 되었습니다 ( 실무 사용은 힘들지만 ... ) Rust 란? 제가 생각했을 때는 메모리 안정성과 동시성, 속도를 중점으로 제작된 언어라는 느낌이 강합니다. 2006년 그레이던 호어가 사이드 프로젝트로 3년간 진행 모질라 재단에서 2010년 7월 7일 발표 2021년 2월에 러스트 재단으로 분리됨 C, C++의 속도..