개발 일반 7

마이크로서비스 설계 시 고려해야 할 10가지 원칙

마이크로서비스 설계 시 반드시 고려해야 할 10가지 원칙 🏗️마이크로서비스 아키텍처(MSA)는 대규모 시스템을 유연하게 운영할 수 있도록 도와주는 강력한 설계 방식입니다. 하지만 제대로 설계하지 않으면 오히려 복잡성이 증가하고 운영 비용이 높아질 수 있습니다. 성공적인 마이크로서비스 설계를 위해 반드시 고려해야 할 10가지 원칙을 정리해보았습니다.📌 목차서비스의 단일 책임 원칙 준수느슨한 결합과 높은 응집도 유지API 중심 설계데이터 관리 전략 수립서비스 간 통신 최적화장애 격리 및 복구 계획자동화된 배포 및 지속적 통합(CI/CD)보안과 인증 강화확장성 및 가용성 고려모니터링 및 로깅 체계 구축서비스의 단일 책임 원칙 준수 🎯마이크로서비스는 특정 기능이나 도메인에 집중해야 합니다. 하나의 서비스가..

개발 일반 2025.03.02

[Swift] Swift로 중복문자가 없는 가장 긴 부분 문자열 찾기

문제 설명주어진 문자열에서 중복된 문자가 없는 가장 긴 서브스트링을 찾아야 합니다. 또한, 해당 서브스트링의 길이도 함께 출력해야 합니다.예제입력 : "aabcbbc"출력 : 3 // "abc"입력 : "bbbbbb"출력 : 1 // "b"입력 : "aaaaabbbcedfg"출력 : 6 // "bcedfg"해결 방법이 문제를 해결하기 위해 슬라이딩 윈도우(Sliding Window) 기법과 해시셋(Hash Set) 을 사용합니다.슬라이딩 윈도우: 문자열을 순회하면서, 현재 서브스트링의 길이를 유지하면서 중복 문자가 나오면 윈도우의 시작을 조정합니다.해시셋: 현재 윈도우에서 중복 문자가 존재하는지 빠르게 확인하기 위해 사용합니다.이제 Swift 코드로 구현해보겠습니다.Swift 코드 구현import Fou..

개발 일반 2025.02.18

개발 및 운영의 개념 (샌드박스? 인하우스? CBT?)

소프트웨어 개발 및 운영 과정에서 자주 언급되는 개념 중 '샌드박스(Sandbox)', '인하우스(In-house)', 'CBT(Closed Beta Test)', 그리고 '알파(Alpha)', '베타(Beta)', '리얼(Real)' 등의 단계가 있다. 이 용어들은 각각 소프트웨어의 개발 방식과 테스트 과정에서 중요한 의미를 가지며, 제품의 완성도와 성공 가능성을 높이는 데 필수적인 요소다. 이번 글에서는 이 개념들을 최대한 쉽게, 그리고 자세하게 설명해보려 한다.샌드박스(Sandbox)샌드박스의 개념샌드박스(Sandbox)는 원래 모래 놀이터를 의미하는 단어다. 소프트웨어 개발에서는 특정한 제약 없이 개발자들이 독립적인 환경에서 실험하고 테스트할 수 있는 격리된 공간을 제공하는 것을 의미한다.샌드박스..

개발 일반 2025.02.16

프로그래밍 개발 뭐부터 시작하면 좋을까?

프로그래밍, 개발을 시작하기 위해서는 뭐부터 시작하면 좋을까요? 개론 형식으로 준비해보았습니다.시리즈로 세부적인 내용을 정리하여 차차 작성하도록 하겠습니다.1. 프로그래밍 공부를 위한 기본 준비(1) 목표 설정어떤 언어를 배울지 결정하기 (Python, Java, JavaScript, C 등)배우려는 이유 설정 (취업, 프로젝트 개발, 문제 해결 등)현실적인 학습 계획 세우기(2) 적절한 학습 도구 준비컴퓨터 및 개발 환경 세팅 (VS Code: https://code.visualstudio.com/, PyCharm: https://www.jetbrains.com/pycharm/, IntelliJ: https://www.jetbrains.com/idea/, Xcode: https://developer.a..

개발 일반 2025.02.16

Hashing(해싱) 개념 정리

1. 해싱(Hashing)이란?해싱(Hashing)은 데이터를 일정한 길이의 고유한 값(해시값)으로 변환하는 과정입니다. 해싱은 암호학적 보안, 데이터 무결성 검사, 빠른 데이터 검색 등 다양한 용도로 사용됩니다.해싱의 특징은 다음과 같습니다.단방향 변환: 해시값을 통해 원래 데이터를 복원할 수 없음고정된 길이 출력: 입력 데이터의 크기와 상관없이 해시값의 길이는 일정함고유성(Uniqueness): 서로 다른 입력은 서로 다른 해시값을 생성해야 함고속 연산: 해시 함수는 빠르게 계산 가능해야 함충돌 방지(Collision Resistance): 같은 해시값을 가지는 서로 다른 입력값(충돌)이 최대한 적어야 함2. 해시 함수(Hash Function)란?해시 함수(Hash Function)는 입력 데이터를..

개발 일반 2025.02.15

GitHub를 활용한 이슈 관리

이번 포스트에서는 GitHub에서 제공하는 도구를 활용하여 이슈를 관리하는 방법에 대해 알아보도록 하겠습니다. GitHub에는 Project Board, Issue관리, Milestone 기능을 제공합니다. 본격적인 관리법을 소개하기에 앞서 Issue에 대해 알아보도록 하겠습니다. Issue의 전체적인 Flow 1. Isuee 발급 2. Issue 작업 3. Pull Request & Code Review 4. Issue 반영 & Close Repository에 들어가면 Issue라는 탭이 있습니다. 해당 탭을 누르면 위와 같은 화면이 나오는데 여기서 이슈를 등록할 수 있습니다. New Issue 버튼을 누르면 아래 화면이 나오게 됩니다. 이슈를 등록하는 화면입니다. 각 부분별로 살펴보도록 하겠습니다. ..

개발 일반 2020.02.07

Agile 방법론에 대한 발췌글

Agile 방법론에 대해 간단하게 잘 정리된 글이 하나있어 발췌하였습니다. 출저 : https://velog.io/@dooyou21/%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-%EC%8A%A4%ED%81%AC%EB%9F%BC-%EC%95%A0%EC%9E%90%EC%9D%BC 가장 익숙한 단어인 스프린트(Sprint)를 먼저 찾아보았다. 스프린트의 사전적 의미는 아래와 같다 스프린트(sprint): 육상 경기·수영 경기·스피드 스케이트 등의 단거리 레이스. 또는, 단거리를 전력(全力)으로 행하는 질주(疾走)나 역영(力泳). 단거리 전력질주. 이 정의를 일에 대입해서, 매우 크지 않은 태스크(단거리)를 적당한 기간(너무 길면 안됨! 단거리니까)동안 집중해서 전력질주하듯 업무를 수행하는..

개발 일반 2020.02.02