Development (135) 썸네일형 리스트형 아키텍처 패턴(Architecture Pattern) 아키텍처 패턴(Architecture Pattern) 소프트웨어의 구조를 구성하기 위한 기본적인 토대가 된다. 각각의 시스템과 그 역할이 정해져있고, 시스템 사이의 관계과 규칙이 있다. 검증된 구조로 개발하기 때문에 안정적인 개발이 가능해진다. 도메인이 복잡할수록 모델이나 코드를 더 쉽게 변경할 수 있다. 계층형 아키텍처 패턴 (Layered Architecture Pattern) 계층을 분리해서 관리하는 패턴이며 현재 가장 흔하게 사용되고 있는 패턴 중 하나이다. 단순하고 대중적이면서 비용도 적게 들어 모든 어플리케이션의 사실상 표준 아키텍처이다. 어떤 경우든 계층을 분리해서 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표이다. 계층화의 핵심은 각 계층은 응집도가 높으면서 다.. 도메인(Domain)과 엔티티(Entity) 도메인(Domain)이란? 프로그래밍에서 어떤 문제나 영역을 다루기 위한 전문적인 지식과 용어 집합을 말한다. 예를 들어 은행 도메인에서는 계좌, 입금, 출금, 이체와 같은 용어들이 사용된다. 일반적으로 도메인은 엔티티(Entity), 값 객체(Value Object), 서비스(Service)와 같은 다양한 요소들을 포함하며 이 요소들은 상호작용하여 비즈니스 로직을 구성한다. 도메인 주도 설계(Domain-Driven Design)와 같은 개발 패러다임에서는 비즈니스 로직을 도메인 모델(Domain Model)이라는 객체 지향적인 방식으로 표현하고 코드로 구현한다. 도메인 모델(Domain Model) 특정 도메인을 개념적으로 정리한 모델이다. 이는 도메인 주도 설계(Domain-Driven Design.. 객체지향 프로그래밍(Object Oriented Programming) 사전지식 객체지향이란? 소프트웨어의 핵심을 기능이 아닌 객체에 맞추고 각각의 역할을 정의하는 것에 초점을 맞춘다. 책임과 권한을 가진 객체들이 서로 협력해서 필요한 기능을 수행하도록 한다. 크고 복잡한 시스템을 효과적으로 분해 및 구성한다. 이해가 쉽고 효율적으로 다룰 수 있게 해주는 가장 보편적인 프로그래밍 패러다임이다. 객체지향의 특징 캡슐화 (Encapsulation) 개념적, 물리적으로 객체 내부의 세부 정보를 감추는 것이다. 캡슐화를 사용하는 가장 큰 이유는 정보은닉을 통한 객체 사이의 결합도 감소를 추구하고 이로 인해 코드의 안정성과 보안성을 높이는데 있다. 상속 (Inheritance) 부모 클래스에서 정의한 속성과 메서드를 자식 클래스에서 그대로 물려받아 사용하는 것을 말한다. 이는 코드의.. 객체 (Object), 클래스 (Class), 인터페이스 (Interface) 객체 소프트웨어 세계에 구현할 대상 클래스에 선언된 모양 그대로 생성된 실체 클래스 객체를 만들어 내기 위한 설계도 혹은 틀 연관되어 있는 메소드와 변수의 집 인터페이스 일반적으로 타입 체크를 위해 사용되며 변수, 함수, 클래스에 사용할 수 있다. 인터페이스는 구현되지 않은 메서드만을 포함하며, 이를 구현하는 클래스는 인터페이스의 모든 메서드를 구현해야 한다. 이것은 일종의 계약에 빗대어 포현할 수 있다. 특정 인터페이스를 구현하는 클래스는 반드시 인터페이스에서 정의한 메서드를 모두 구현해야 한다. 따라서 여러 클래스에서 동일한 인터페이스를 구현하여 동일한 기능을 수행하도록 보장할 수 있다. 인터페이스는 상속을 통해 사용되며, 클래스가 여러 인터페이스를 구현할 수 있다. 인터페이스를 사용하면 다형성을 구.. 트랜잭션의 동시성과 격리수준 동시성(Concurrency)이란? 다수의 클라이언트가 하나의 데이터를 동시에 사용 및 공유하는 것이다. 이때 여러 작업이 동시에 수행되면 동시성 문제(Concurrency Issues)가 발생할 수 있다. 동시성 문제란, 여러개의 트랜잭션이 동시에 실행될 때 각각의 트랜잭션이 데이터를 일관성 있게 처리하지 못하는 문제를 말한다. 예를 들어 A와 B 두 개의 트랜잭션이 동시에 실행될 때 A 트랜잭션에서 수정한 데이터가 B 트랜잭션에서 읽어들인 데이터와 일치하지 않는 경우가 발생할 수 있다. 동시성 문제를 해결하기 위해 하나의 클라이언트가 자원(Resource)를 점유할 수 있도록하는 자원 잠금(Resource Locking)을 사용한다. 이것을 락(Lock)기반 제어 기술이라고 한다. 락(Lock)이란?.. WIL_ORM, SQL, NoSQL 이번주 Lv3 과제를 하며 그동안 많이 써오던 mongoDB에서 MySQL로 데이터 베이스를 바꾸게 되었다. mongoDB는 NoSQL 계통 데이터베이스이고 MySQL은 RDBMS 계통 데이터베이스이다. 두 종류의 데이터 베이스를 사용해보고 느낀점은 mongoDB가 확실히 유연하고 확장성이 좋다는 점이다. MySQL은 데이터베이스나 스키마 구조가 변경되었을 때 수행해야하는 절차가 좀 까다로워 그 점이 불편하게 다가왔다. 하지만 MySQL은 ACID 특성을 지키기 위해 일련의 절차를 통해 데이터베이스를 안정적이고 견고하게 유지하는 것 같다. 사용하는 데이터베이스가 바뀌면서 프레임 워크도 Sequelize로 바뀌었다. Sequelize는 Node.js의 대표적인 ORM 프레임 워크이다. 객체 지향형 프로그래.. Transaction과 ACID 트랜잭션(Transaction)이란? 데이터베이스에서 수행되는 작업의 논리적 단위이다. 다시 말해 DB의 데이터를 변경하는 일련의 작업을 하나의 단위로 묶어서 처리하는 것이다. 예를들어 DB에 새로운 데이터를 추가하거나 기존 데이터를 수정 또는 삭제할 때 여러개의 작업을 순서대로 실행하는 것이 아니라, 하나의 트랜잭션으로 묶어서 처리하는 것이다. 쉽게 말해 하나의 작업에 하나의 쿼리를 종속하는 것이 아닌 여러개의 작업(쿼리)를 묶어 하나의 단위로 그룹화하여 처리하는 작업을 뜻한다. 이렇게 트랜잭션을 사용하면 작업의 완전성이 보장된다. 특정한 작업을 전부 처리하거나 전부 실패하게 만들어 데이터의 일관성을 보장해주는 기능이다. 트랜잭션의 예시 은행에서 계좌이체를 하는 상황이다. a계좌에서 b계좌로 10만원을.. Thunder Client 문제 항해 99 주특기 주차 Lv4 과제중 특정 api가 자꾸 실행이 안되는 문제 발생 썬더 클라이언트로 해당 api로 get요청을 넣으면 터미널에 자꾸 엉뚱한 query가 실행되는게 보인다. 시도 처음엔 해당 api 코드 문제인줄 알고 인증 미들웨어부터 변수와 메서드, 키워드 등등 모든 것을 바꿔보았다. 장장 6시간 동안..... 해결 그러다 결국 api uri를 바꾸고 썬더클라이언트로 다시 요청을 넣었더니 거짓말처럼 해결되었다....... 알게된 것 지나간 내 시간이 너무 아깝고 허무하다. 알게된 것도 없다. 지금은 시간이 너무 늦었으니 내일 다른 팀원분들께 공유해서 정확한 원인을 알아봐야겠다. 이전 1 ··· 4 5 6 7 8 9 10 ··· 17 다음