개발하는 프로 국밥러
article thumbnail
Git 브랜치 전략, Git-Flow, Github-Flow
프로젝트 2025. 1. 7. 15:07

Git 브랜치 전략 브랜치 전략이란 여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 활용하기 위한 work-flow 이다.  브랜치 생성, 삭제, 병합 등 git 의 유연한 구조를 활용해서, 각 개발자들의 혼란을 최대한 줄이며 다양한 방식으로 소스를 관리하는 역할을 한다.  즉, 브랜치 생성에 규칙을 만들어서 협업을 유연하게 하는 방법론을 말한다 . 만약 브랜치 전략이 없다면? 브랜치 전략이 없을 때 단점은 다음과 같다. 어떤 브랜치가 최신 브랜치지?어떤 브랜치를 끌고와서 개발을 시작해야 하지? 어디에 push 해야하지? 핫픽스를 해야 하는데 어떤 브랜치를 기준으로 수정해야 할까? 배포 버전은 어떤 걸 골라야하지? 가장 널리 사용되는 브랜치 전략은 다음 2가지이다. git-flow 전..

article thumbnail
Github Issue & PR 관리
프로젝트 2025. 1. 7. 08:37

이번 프로젝트를 시작하면서, Github Project 내 Issue 를 만들어 관리를 하고 있습니다. 그런데 회사에서는 SVN 을 사용하다보니, 사용방법이 익숙하지 않아 히스토리가 꼬여버리는 둥 .. 용도에 맞지 못하게 사용하고 있다는 생각이 들었는데요, 이참에 Github Issue & PR 관리에 대해서 한번 정리하는 시간을 갖고자 합니다.  Issue 란?이슈(Issue) 란 프로젝트에서 작업해야 할 단위라고 할 수 있습니다.  개발해야야 하는 기능, 수정해야할 버그, 리팩터링 해야 할 코드 등 프로젝트에서 발생되는 작업들을 이슈로 생성하여 관리합니다. 이슈를 생성해 관리한다면, 이슈에 대한 커밋 내역들을 하나의 이슈 페이지에서 관리가 가능하며, 이슈 관련 정보를 한 곳에서 묶어서 관리할 수 있다..

article thumbnail
프로젝트 주제 선정 & 구현 범위 설정
프로젝트 2025. 1. 4. 16:54

프로젝트 주제 선정 기존 서비스 클론 vs 새로운 서비스 개발 프로젝트 주제를 선정하기 위해 두 가지를 고민해 보았습니다. 새로운 서비스를 만드는 일은 매우 설레고 흥미로운 작업입니다. 그러나 기획부터 개발까지 해야 할 일이 방대해, 개발에만 집중하기에도 부족한 시간에 새로운 서비스 아이디어를 내고 다듬어 개발까지 혼자서 진행하는 것은 무리라고 판단했습니다.(저는 직장인이랍니다.. ㅠ)반면, 기존에 만들어진 서비스를 클론하는 방식은 이미 수많은 아이디어와 결과물이 존재하고, 참고할 수 있는 자료와 Use Case가 많습니다. 혼자서 모든 일을 감당해야 하는 현재 상황에서는 기존 서비스를 클론하는 것이 가장 합리적이라고 생각했습니다.프로젝트 목표이전 글에서 포스팅 한(프로젝트 시작하기) 내용과 같이, 프로..

article thumbnail
프로젝트 시작하기
프로젝트 2025. 1. 4. 14:53

프로젝트 시작하기 2025년이 찾아왔네요.작년부터 진행해오던 F-Lab 멘토링에서 드디어 프로젝트를 시작하려 합니다.매번 회사 핑계, 개인적인 핑계 등 이런저런 이유로 미뤄왔었는데, 새해에는 새로운 결심과 다짐으로 꼭 마무리해보겠습니다!이전 멘토링은 다른 멘티분들과 함께 진행되어 커뮤니케이션 경험도 할 수 있었다고 들었지만, 저는 혼자 진행하는 만큼, 커뮤니케이션보다는 제가 원하는 방향으로 프로젝트를 이끌어 나가는 경험을 목표로 삼으려 합니다.(오히려 좋을 수도 있겠죠...ㅎ) 현재 회사에서 업무를 하며 가장 갈증을 느끼는 부분은 크게 두 가지입니다.범용적인(Java, Spring 기반) 기술 스택에 대한 갈증현재 근무하는 회사는 금융 PG사로, 기술 스택이 2010년대 초반 수준에 머물러 있습니다. 기..

Primitive 타입과 Reference 타입
언어/Java 2023. 8. 18. 14:11

Primitive 타입 흔히 기본형 타입으로 int, float, double, char, boolean 등의 타입이 해당됩니다. 기본형 타입의 변수는 값을 직접 가지고 있으며, 스택(Stack) 메모리에 저장됩니다. 이러한 변수들은 크기가 작기 때문에, 빠른 엑세스와 빠른 메모리 할당을 허용합니다. 예를 들어 int, float, double, char, boolean 은 고정된 크기에 공간을 차지하며, 변수에 값을 할당하면 해당 공간에 값을 직접 저장합니다. 메모리 할당과 해제가 빠르며 오버헤드가 적습니다. Reference 타입 참조 타입으로 객체, 배열 등이 해당됩니다. 참조형 타입의 변수는 해당 데이터의 주소를 저장하고 있으며, 그 주소는 스택(Stack) 영역에 저장되고 있습니다. 참조 타입 ..

equals() 와 hashCode()
언어/Java 2023. 8. 18. 11:20

equals 와 hashCode 는 둘 다 객체의 동등성 비교에 사용되는 메서드입니다. 하지만 두 메서드의 하는 역할과 사용되는 상황에서 차이가 있습니다. equals() equals 메서드는 두개의 객체가 논리적으로 동일한지 확인하는 데 사용됩니다. 즉 두객체의 내용(값)이 동일한지 비교합니다. 따라서 equals 메서드를 오버라이딩하여 객체들의 내용을 비교하는 방법을 정의할 수 있습니다. (대부분의 IDE 에서 equals hashCode 메서드를 오버라이딩 하는 기능을 제공합니다) 예를 들어서, 사용자 정의 클래스에서 equals 를 오버라이딩 할 때는, 보통 객체의 필드들을 비교하여 같은 내용인지를 판단하는 로직을 구현합니다. 해시 함수 hashCode 메서드를 알기 전에 해시 함수에 대한 기본적..

article thumbnail
[IT 엔지니어를 위한 네트워크 입문] Chapter13,14. 네트워크 디자인, 가상화 기술
CS/네트워크 2023. 1. 10. 17:48

고재성, 이상훈님의 책을 보며 정리한 내용입니다. 문제가 될 시 해당글 삭제하겠습니다. 2계층 / 3계층 네트워크 2계층 네트워크 2계층 네트워크는 이름 그대로 호스트 간 통신이 직접 2계층 통신만으로 이루어지는 네트워크 디자인이다. → 2계층에서 통신을 하려면 호스트들끼리 동일한 네트워크여야 한다. (LAN) → 3계층 장비를 거치지 않고 통신하는 네트워크 만약 하나의 브로드캐스트 도메인이 되고 루프 구조가 생기면 문제가 발생하므로 STP(Spaning Tree Protocol) 를 사용해 문제를 해결한다. STP 사용으로 블록 포인트가 생겨 전체 대역폭을 사용하지 못하는 문제가 생겨난다. → 이 문제 해결을 위해서 논 블로킹(Non-Blocking) 구조를 만들어야 한다. MC-LAG(가상 MAC 주..

article thumbnail
[IT 엔지니어를 위한 네트워크 입문] Chapter12. 로드 밸런서
CS/네트워크 2023. 1. 10. 17:29

고재성, 이상훈님의 책을 보며 정리한 내용입니다. 문제가 될 시 해당글 삭제하겠습니다. 부하 분산이란? 서비스 규모가 커질 때, 물리, 가상 서버 한 대로는 모든 서비스를 수용할 수 없게 된다. 서비스 가용성을 높이기 위해서 하나의 서비스는 보통 두 대 이상의 서버로 구성하는데, 각 서버 IP 주소가 다르기 때문에, 사용자가 서비스를 호출할 때는 어떤 IP 로 서비스를 요청할 지 결정해야 한다. 이런 문제점 해결을 위해서, L4, L7 스위치라는 로드밸런서를 사용한다. 부하 분산 방법 로드 밸런서는 부하를 다수의 장비에 분산시키기 위해 가상 IP 주소를 갖게 된다. → 이 주소는 가상 IP 주소이므로 VIP(Virtual IP) 라고도 하고, 서비스를 위해 사용 되는 IP 주소이므로 서비스 IP 라고도 ..