Development 26

IT 프로덕트(솔류션) 개발 단계

오랜(?) 개발자 생활을 하던 중, 우연히 프로덕트(솔류션)를 총괄하는 자리로 이직을 하게 되었다. 요즘 고민이 많아졌다. 내가 지금 만들려고 하는, 만들어야 되는 프로덕트는 무엇일까? 과연 프로덕트는 무엇일까? 솔류션은 무엇일까? 책이나 ChatGPT 등을 조사해 보면 아래와 같은 일반적인 프로덕트 매니저들이 생각해야 될 내용들을 검색해 볼 수 있다. 너무나 일반적이라서 내가 이걸 왜 검색을 했을까 하는 생각마저도 든다. 아이디어 도출: 프로덕트 개발은 일반적으로 아이디어나 필요성으로부터 시작됩니다. 이 아이디어는 회사 내부에서 직원들이나 팀원들로부터 나올 수도 있고, 외부에서 고객 요구사항을 조사하거나 시장 조사를 통해 얻을 수도 있습니다. 요구사항 분석: 아이디어가 도출되면 다음으로는 프로덕트의 요..

Development 2023.06.13

객체 지향 패러다임

객체 지향 패러다임은 클래스의 인스턴스인 객체를 중심으로 소프트웨어 설계를 구성하는 프로그래밍 패러다임입니다. 객체 지향 패러다임은 객체 지향 프로그래밍 설계의 원칙 중 캡슐화, 상속 및 다형성의 원칙을 기반으로 합니다. 객체 지향 패러다임에서 클래스는 객체 생성을 위한 청사진 또는 템플릿 역할을 합니다. 해당 클래스의 개체가 소유할 속성(속성)properties(attributes) 및 동작(메서드)behaviors(methods)을 정의합니다. 개체는 클래스의 인스턴스이며 각 개체는 여전히 특정 클래스에 속하면서도 고유한 상태와 동작을 가질 수 있습니다. 캡슐화는 객체 지향 패러다임의 핵심 원칙입니다. 즉, 해당 데이터에서 작동하는 데이터와 메서드가 클래스 내에서 함께 묶인다는 의미입니다. 이는 정보..

Development 2023.06.12

GraphQL

MSA 아키텍처가 인기를 끌고 있고, MSA의 근간이 되는 REST API를 방식으로 지원하는 GraphQL 도입을 하는 경우가 늘고 있다. REST API + ORM + GraphQL를 통해서 생산성을 높이기 위한 노력이 증가하고 있다. GraphQL은 2015년에 페이스북 개발자들이 모바일 어플리케이션을 제작하면서 개발되어 공개된 오픈 소스 쿼리 언어 및 런타임입니다. GraphQL은 기존의 RESTful API에 비해 데이터를 검색하고 조작하는 효율적이고 유연한 방법을 제공합니다. GraphQL을 사용하면 클라이언트는 API에서 필요한 정확한 데이터를 지정할 수 있으며, 서버는 해당 데이터만 응답합니다. 이는 REST API에서 서버가 정의한 고정된 엔드포인트와 데이터 구조로 인해 발생하는 데이터의..

Development 2023.06.10

CI/CD란 무엇인가?

CI/CD는 지속적 통합(Continuous Integration) 및 지속적인 배포(Continuous Deployment)의 약자입니다. CI/CD는 소프트웨어 개발 및 배포 프로세스를 자동화하여 효율성과 속도를 향상시키는 방법입니다. 지속적 통합(CI)은 개발 과정에서 개발자들이 작성한 코드를 자동으로 통합하고 테스트하는 프로세스를 의미합니다. 개발자들이 각자의 코드를 작성한 후, 이를 중앙 저장소에 통합하면 CI 시스템이 해당 코드를 가져와서 자동으로 빌드, 테스트, 분석을 수행합니다. 이를 통해 코드 품질을 유지하고 충돌이나 오류를 조기에 발견할 수 있습니다. 지속적 통합(CI)은 개발자들이 작성한 코드를 정기적으로 통합하고 테스트하는 과정입니다. 일반적으로 개발자들은 각자 독립적으로 코드를 작..

Development 2023.06.02

API란 무엇인가?

API는 "Application Programming Interface"의 약자로, 응용 프로그램 간의 상호 작용을 위한 규약이나 인터페이스를 말합니다. API는 소프트웨어 개발에서 중요한 역할을 합니다. API는 서로 다른 소프트웨어 시스템이 상호 작용할 수 있도록 허용하고, 소프트웨어 컴포넌트 간의 통신을 용이하게 만들어 줍니다. API는 일련의 규칙과 프로토콜을 정의하여, 소프트웨어 개발자가 다른 시스템의 기능을 호출하고 사용할 수 있도록 합니다. API는 다양한 형태로 제공될 수 있습니다. 예를 들어, 웹 API는 웹 응용 프로그램 간의 통신을 위한 인터페이스를 제공하며, 소프트웨어 라이브러리 API는 프로그래밍 언어에서 사용할 수 있는 함수와 클래스를 제공합니다. 또한, 운영 체제 API는 운영..

Development 2023.06.01

MSA 아키텍처

마이크로서비스 아키텍처(MicroService Architecture, MSA)는 소프트웨어 개발에서 매우 유용한 접근 방식 중 하나입니다. 이 아키텍처는 소프트웨어 응용 프로그램을 작은, 독립적인 서비스의 집합으로 구축합니다. 각 마이크로서비스는 특정한 비즈니스 기능을 담당하며, 다른 마이크로서비스와는 잘 정의된 API를 사용하여 통신합니다. 마이크로서비스 아키텍처의 주요 이점 중 하나는 소프트웨어의 지속적인 제공과 배포(CI/CD)를 가능하게 한다는 것입니다. 각 서비스가 독립적이므로, 다른 서비스와 별도로 개발 및 배포할 수 있으며, 더 빠른 릴리스 주기와 전반적인 민첩성이 향상됩니다. 또한, 마이크로서비스는 독립적으로 확장할 수 있으므로 더 큰 효율성과 비용 절감을 가능하게 합니다. 하지만, 마이..

Development 2023.05.31

How to override methods in django

파이썬(Django)에서 함수 재정의 django(python)에서의 메소드 재정의하는 방법은 경우에 따라 다르지만, 공식문서를 확인하는 것이 원칙입니다. 특히 모델의 save() 함수 등과 같이 모델의 경우에는 특히 공식문서를 확인하는 것이 원칙입니다. 일부 메서드에 *args 및 **kwargs가 필요한 이유는 이 것이 "템플릿"(반드시 있어야 하는 것)이 아니라, django가 메서드를 실행할 때 *args 및 **kwargs를 생략할 때 실수로 제외할 수 있는 다른 인수와 키워드 인수를 전달하기 위함입니다. Django의 save() 함수을 보면 기본적으로 전달되는 수많은 키워드 인수가 있습니다. 추상적인 모델의 예를 보자. 이 옵션을 다음으로 재정의하는 경우: class SomeAbstractM..

Development 2021.03.10

django 커스텀 유저 모델(Custom User Model)

Django Custom Model django 에는 기본적으로 정의되어 있는 User 모델이 있다. migrations를 하게 되면 자동으로 테이블이 생성된다. 기본으로 정의되어 있는 모델은 처음 로그인을 할때 username 으로 로그인을 하게 되어 있다. 서비스를 개발할 때 다른 User 모델이 필요하게 된다. 기본적으로 정의되어 있는 모델보다 다양한 정보를 필요로 할때가 있다. 이럴 때는 커스텀 유저 모델을 사용해야 한다. 커스텀 유저 모델 생성 django에서 제공하는 AbstractBaseUser를 상속받아서 Custom User Model을 생성 할 것이다. django의 앱 폴더의 models.py를 아래와 같이 변경한다. models.py from django.contrib.auth.mo..

Development 2021.03.09

아키텍처(Architecture)

개요 업무를 진행하면서 듣는 많은 단어들이 있습니다. 그중에 어떤 프로젝트를 시작하기전에 항상 들리는 단어가 있습니다. 바로 아키텍처입니다. 보통 초보개발자가 아키텍처를 구성하는 일은 지극히 드문 케이스입니다. 하지만 저와 같은 ‘초보 개발자들도 도대체 아키텍처가 무엇이길래? 왜 우리한테는 이 업무가 주어지지 않는가?’ 에 대해 생각해 볼 수 있기에 정리를 해보려고 합니다. 본문 먼저 기본적으로 용어에 대해 알아가기 전에 사전등을 살펴보면 영어단어 - 아키텍쳐 영어단어로써의 아키텍처는 ‘건축학’이라는 뜻입니다. 건축학은 프로그래밍에 많은 영향을 미친 학문입니다. 때문에 건축용어를 많이 사용하고있습니다. 심지어 우리는 일정을 계획 할 때도 MM(Man month)라는 희한한 용어를 사용합니다. 다음으로 w..

Development 2021.02.17
반응형