Item Number SCP-835 Object Class Keter Special Containment Procedures SCP-835 is to be monitored and checked daily for new growth. In the event SCP-835 becomes hostile, suppression tactic AA-6 is to be immediately implemented until aggressive action ceases. Containment area must be maintained in open ocean due to the highly aggressive response of SCP-835 to confinement for any length of time. Waste issued by SCP-835 must be immediately collected and contained. Feeding of SCP-835 is to take place twice daily to consist data expunged. SCP-835 may be moved to a new location twice yearly, provided that the current location is no longer capable of supporting SCP-835, and the move has been approved by Site Command. Staff are to remain at least five meters away from SCP-835. Anyone working near SCP-835 must have safety lines attached to recall winches. Contact with SCP-835 will result in the immediate recall of all staff, and implementation of suppression tactic AA-6. Should contact results in full capture of a staff member, SCP-835 is to be monitored constantly until the release of the subject. Description SCP-835 appears to be a large mass of coral-like polyps, weighing tons. The individual polyps are larger than any known coral species, growing to more than one meter in diameter in some cases. The central mass is roughly oval-shaped, with a very large, three-meter diameter, polyp at each end. SCP-835 is incapable of locomotion, and appears to anchor itself with large tentacles, projected from the SCP-835 polyps. These are also used in feeding, and are coated with a sticky adhesive substance. The tentacles are also quite strong, and have been shown to be capable of damaging plate steel. The coral of SCP-835 is extremely hard, requiring high-powered diamond drills to collect even small samples. SCP-835 also grows at a very accelerated rate, capable of adding 22.68 kilograms, or 50 pounds of mass every day. SCP-835 is susceptible to many chemicals, which cause SCP-835 to seal up, and halt all growth for 24 hours, prompting the development and use of suppression tactic AA-6. Testing has shown data expunged. SCP-835 emits a large mass of semi-liquid material several times a day from the large polyps on each end. This appears to be made of semi-digested solids, fecal material, and semen. This mass also has several forms of virus, bacteria, and parasites, many of which have been found only within SCP-835. The bacterium-835-I-5 forms the major concern for containment, due to data expunged. This, coupled with the extremely hard shell of SCP-835, form a major obstacle to neutralization. Any force capable of cracking open SCP-835 would also cause the slurry inside to spread, and cause additional infection from 835-I-5. Addendum 835-1 First draft of after-action report by Mobile Task Force Zeta-9er. Circumstances of retrieval. On f***ing at f***ing hours, Mobile Task Force Zeta-9er, Mole Rats, conducted an investigation of SCP-835. At this time, SCP-835 had a mass of only 4 tons, and only one large polyp at the north end of the structure, designated Polyp Alpha, Polyp Bravo not yet being in existence. As per standard procedure, four team members were chosen for the initial investigation. Standard isolation suits, underwater variant, were worn by all four team members. Lieutenant C took point as team leader, while Sergeants L and M served as support. Corporal H, a rookie team member, accompanied the team as an observer. A standard underwater remote vehicle, or URV, was used for initial investigation. SCP-835 did not, at first, act in a hostile manner towards the team, allowing team members to approach and make contact without incident. URV-01 was sent to investigate the exterior of the object, while team members C, L, and M proceeded towards what they believed to be the entrance of the site. Corporal H was ordered to remain outside, and to monitor URV-01, in order to ensure that the devices tether did not become tangled on the exterior protrusions. The first sign of trouble occurred when Corporal H, while attempting to clear a jam in URV-01's sampling claw, reported in with the words, Oh God, help me, help me.  Jesus Christ, I can't do this.  It was his first f***ing mission. I should have kept my eye on him. Christ. Alright, here goes. Guess I'll just let Sarge edit this for me. Again. So the thing grabbed the kid. It had me fooled to rights. The entrance wasn't an entrance, it was just some cave. The real entrance was the big polyp thing on the north end. It grabbed the kid and started dragging him towards the mouth. Topside started to drag him up, but all they got was a snapped cable. And the kid, he got pulled inside Data expunged. I got the carabiner on, we're hooked together and Topside starts winching us up and we're not getting anywhere.  It was like, Jesus, I need another drink. Fuck. It was like, the only way I can think of it was like, you know that thing that doctors do when they stick a tube of someone's and look at the inside of their intestines. I saw that on TV once.  There were these muscular contractions, I guess, and they were slowly sliding us down the length of the tube. If we weren't wearing the hard suits, we'd have been crushed. But as it was, we were held so tight we could barely move, even with power assist.  His faceplate was covered in vomit.  I started yelling for him, trying to get him to say something. He managed to tell me he was alright. He was sobbing like a baby. I started doing some calculations. Based on my dead reckoning tracker and initial sonar scans, we were moving about a meter every minute. That meant 72 hours until we came out the other side, assuming we did. We had the air. Our rebreathers could keep going for days. What we didn't have was the power to keep the suits warm for that long. If the heat went out, hypothermia would kill us. I don't know, look it up. In any case, we'd be dead. We needed to conserve power. I told the kid to turn off his helmet lights, lock his joints, and turn down his heater to minimal. He started crying. He didn't want to do it. I didn't blame him. But I told him we had no choice. We finally agreed to shut down everything but our internal helmet lights. At least. It seemed to calm him down. And honestly, that extra 0.1% of power wouldn't make a difference. I think that was the worst part. We spent at least a day like that, locked in our suits, couldn't move our arms and legs, no sound but the things gurgling, and your own breathing, and the sound of your rebreather. The puke on the kid's faceplate started to dry up and flake off about an hour or so in, so I could see his face. He looked tired and scared. I think... check the log, Sarge. I think it was about 13 hours in when the kid started talking again. Kid started babbling. Data expunged. Anyway, after that, he calmed down a lot. I told him to take a nap. He slept a bit, thank God. About 24 hours in, we reached. I guess they're calling it the stomach now. The worst warning sign was a gurgling kind of noise, louder with a crunching noise over it. I told the kid to bring his suit up to full power and get ready. A little while after, we fell out into this big chamber, big as in big enough for the two of us to fit in it comfortably, which was huge compared to the tight squeeze of the tube. Kid's suit started hissing and the outer shell started to turn all pitted and stuff, and the gloves were starting to degrade too. So I yelled at him to move and we started heading towards this sphincter, I guess. I remember, God, why can I remember this? The insides of the stomach were lined with data expunged. I almost lost it there. Data expunged. I'd stayed. My suit would have melted and I'd be dead. But the kid grabbed me and shoved me headfirst through the sphincter and fell into the other place. It was even worse than the stomach. Data expunged.  I'm not squeamish, Bill.  But this place squeaked me out so bad I almost passed out. The kid helped me back up to my feet, though. Told me we were almost out. Come on, Lieutenant. We're almost out of here. He said, we moved over to the other sphincter, but the thing was, well, it was puckered up tighter than my drill sergeants and pulled back in basic. So no way we were getting out of there. We decided to wait for a bit until the thing shot its load, so to speak. Anyway, that's when things started to go bad. Data expunged. I managed to wrestle the thing through the sphincter into the stomach. Its tentacles writhed at me as it started to melt. Data expunged.  You know the rest of the story, Bill. Data expunged. So yeah, fill out the rest of the reports and the logs for me, will ya? Oh, and be sure to edit it so the motherf**kers in command don't yell at me for being unprofessional again. I'm gonna... By special order of 05-11, all expunged data files pertaining to this report are hereby released for general viewing. Please see revised file SCP-835 Uncensored. Item number SCP-835 Object Class Keter Special Containment Procedures SCP-835 is to be monitored and checked daily for new growth. In the event SCP-835 becomes hostile, suppression tactic A86 is to be immediately implemented until aggressive action ceases. Containment area must be maintained in open ocean due to the highly aggressive response of SCP-835 to confinement for any length of time. Waste issued by SCP-835 must be immediately collected and contained. Feeding of SCP-835 is to take place twice daily to consist of any form of local aquatic species. Feeding should be supervised at all times and no unscheduled feedings of SCP-835 are to take place for any reason. Should SCP-835 enter a rage state higher level mammals may be issued as a food supply up to and including homosapiens. SCP-835 has shown high levels of docility when digesting higher level mammalian life. And recommendation for the issuing of this form of food has been approved for use during testing phases. SCP-835 may be moved to a new location twice yearly provided that the current location is no longer capable of supporting SCP-835 and the move has been approved by site command. Staff are to remain at least 5 yards away from SCP-835. Anyone working near SCP-835 must have safety lines attached to recall winches. Contact with SCP-835 will result in the immediate recall of all staff and implementation of suppression tactic AA-6. Contact result in full capture of a staff member. SCP-835 is to be monitored constantly until the release of the subject. Description SCP-835 appears to be a large mass of coral like polyps weighing tons. The individual polyps are larger than any known coral species growing to more than 1 meter in diameter in some cases. The central mass is roughly oval shaped with a very large 3 meter diameter polyp at each end. SCP-835 is incapable of locomotion and appears to anchor itself with the large tentacles projected from the SCP-835 polyps. These are also used in feeding and are coated with a sticky adhesive substance. The tentacles are also quite strong and have been shown to be capable of damaging plate steel. The coral of SCP-835 is extremely hard requiring high powered diamond drills to collect even small samples. SCP-835 also grows at a very accelerated rate capable of adding 50 pounds of mass every day. SCP-835 is susceptible to many chemicals which cause SCP-835 to seal up and halt all growth for 24 hours. Prompting the development and use of suppression tactic AA-6 testing has shown that SCP-835 appears to be made from basic human biological components with the shell being formed from super dense calcium the caps that cover the polyps coated with tooth enamel and the tentacles appearing to be formed from mutated tongue cells. Most human biological systems are present. However many neurological, lymphatic, circulatory, etc. show extreme mutation and atrophy. The digestive and reproductive systems appear both highly developed and linked with both feces and semen being collected and ejected from the same chamber. SCP-835 emits a large mass of semi liquid material several times a day from the large polyps on each end. This appears to be made of semi digested solids fecal material and semen. This mass also has several forms of virus, bacteria and parasites many of which have been found only within SCP-835. The bacterium 835-I-5 forms the major concern for containment due to its role in the reproductive cycle of SCP-835. Vertebrate animals infected with SCP-835-I-5 will undergo the following symptoms. Increased weight gain 10-20 pounds a day on average. Constant hunger urged to consume normally unpleasant or unpalatable items raw meat organs, grass wood. Hardening or calcification of the skin formation of polyps on the skin rapid reduction in intelligence and mobility increased aggression urged to enter seawater atrophy of many major biological systems end stage infection appears to convert this subject into an additional instance of SCP-835 Attempts to determine what if any intelligence remains have been conclusive. However SCP-835 appears to have a limited amount of awareness 835-I-5 has shown a very high infectivity rate with 68% of all infected subjects progressing to end stage There is no form of treatment or antibiotic that has been shown to halt or reverse the effects of 835-I-5 This coupled with the extremely hard shell of SCP-835 form a major obstacle to neutralization any force capable of cracking open SCP-835 would also cause the slurry inside to spread and cause additional infection from 835-I-5 and a file by special order of 05-11 all expunged data files pertaining to this report are hereby released for general viewing Please see the following revised after-action report Addendum 835-I First draft of after-action report by Mobile Task Force Zeta-9er Circumstances of Retrieval On at hours Mobile Task Force Zeta-9er Mole Rats Conducted in investigation of SCP-835 At this time SCP-835 had a mass of only 4 tons and only one large polyp at the north end of the structure designated polyp alpha polyp bravo not yet being in existence As per standard procedure 4 team members were chosen for the initial investigation Standard isolation suits underwater variant were worn by all 4 team members Lieutenant C took point as team leader while sergeants L and M served as support Corporal H, a rookie team member accompanied the team as an observer a standard underwater remote vehicle or URV was used for the initial investigation SCP-835 did not at first act in a hostile manner towards the team allowing team members to approach and make contact without incident URV-01 was sent to investigate the exterior of the object while team members C, L and M proceeded towards what they believed to be the entrance of the site Corporal H was ordered to remain outside and to monitor URV-1 in order to ensure that the devices tethered did not become tangled on the exterior protrusions The first sign of trouble occurred when Corporal H while attempting to clear a jam in URV-1 sampling claw reported in with the words Oh God, help me, help me he then reported that some horrible tentacle thing had wrapped around his arm and was dragging him in towards a f***ing mouth and vocalized several distress calls Jesus Christ, I can't do this God damn it, he was just a kid it was his first f***ing mission I should have kept my eye on him Christ alright here goes guess I'll just let Sarge edit this for me again so the thing grabbed the kid it had me fooled to write the entrance wasn't an entrance it was just some cave the real entrance was the big polyp thing on the north end it grabbed the kid and started dragging him towards the mouth topside started to drag him up but all they got was a snapped cable and the kid he got pulled inside and eaten God, I still remember him screaming he was screaming at us he was crying oh God Lieutenant it's eating me, oh God I don't wanna die I'm shouting at him to calm down we're gonna get him out of there and then topside tells us to abort and they start the winches I'm screaming at them to wait I had his hand I had him I got the carabiner on, we're hooked together and topside starts winching us up and we're not getting anywhere I'm grabbing on I'm telling him I'm not gonna let go and then the winch starts to seize up and I feel this jerk on the tether and it goes slack and then we're both sliding into that damn thing it was like Jesus I need another drink fuck the only way I can think of it was like you know that thing that doctors do when they stick a tube up someone's ass and look at the inside of their intestines I saw that on TV once it was like that except I was going down the throat of some horrible underwater hell monster not up some poor bastard's rear there were these muscular contractions I guess and they were slowly sliding us down the length of the tube if we weren't wearing the hard suits we'd have been crushed but as it was we were held so tight we could barely move even with power assist I managed to get my head up enough to see the kid's face his faceplate was covered in vomit poor bastard had puked in his suit I started yelling for him trying to get him to say something he managed to tell me he was alright he was sobbing like a baby I started crying like a baby I started doing some calculations based on my dead reckoning tracker and initial sonar scans we were moving about a meter every minute that meant 72 hours until we came out the other side assuming we did we had the air our rebreathers could keep going for days what we didn't have was the power to keep the suits warm for that long if the heat went out the thermia would kill us I don't know, look it up in any case we'd be dead we needed to conserve power I told the kid to turn off his helmet lights lock his joints and turn down his heater to minimal he started crying he didn't want to do it I didn't blame him but I told him we had no choice we finally agreed to shut down everything but our internal helmet lights at least it seemed to calm him down and honestly that extra .1% of power wouldn't make a difference I think that was the worst part we spent at least a day like that locked in our suits couldn't move our arms and legs no sound but the things gurgling and your own breathing and the sound of your rebreather the puke on the kid's faceplate started to dry up and flake off about an hour or so in so I could see his face he looked tired and scared I think, check the log Sarge I think it was about 13 hours in when the kid started talking again kid started babbling apologized for stealing my underwear sent you guys made him sneak into my quarters and take it from me as a dare why the hell did you make him do that I mean I don't mind if you haze the new guy's bill but that sh** gets old it was hard enough trying to get them to listen to me as it was anyway bill it's all there in the log you know what I told him what I promised all lies of course jokes he laughed too joked back I hope he was joking I don't know what I would have done if we'd survived maybe I would have gone ahead and did it I don't know we're all f**ked up anyway after that he calmed down a lot I told him to take a nap he slept a bit thank god about 24 hours in we reached I guess they're calling it the stomach now first warning sign was a gurgling kind of noise louder with a crunching noise over it I told the kid to bring his suit up to full power and get ready a little while after we fell out into this big chamber big as in big enough for the two of us to fit in it comfortably which was huge compared to the tight squeeze of the tube kid's suit started hissing and the outer shell started to turn all pitted and stuff and I noticed my gloves were starting to degrade too so I yelled at him to move and we started heading towards this sphincter I guess I remember god why can I remember this the insides of the stomach were lined with teeth and faces human faces and they were all wailing at us and screaming they were begging us to kill them I almost lost it there I started opening up with my gun started shooting them in the heads and if I'd stayed my suit would have melted and I'd be dead but the kid grabbed me and shoved me head first through the sphincter and we fell into the other place it was even worse than the stomach that one was lined with faces and filled with acid this place was well you know what it was full of I'm not squeamish Bill you can't be if you're a mole rat but this place squicked me out so bad I almost passed out the kid helped me back up to my feet though told me we were almost out come on lieutenant let's go he said we moved over to the other sphincter but the thing was well it was puckered up tighter than my drill sergeants at the hole back in basic so no way we were getting out of there we decided to wait for a bit until the thing shot its load so to speak if it made shit and come it would have to spit it out eventually right anyway that's when things started to go bad the kid started complaining about this awful smell I tried to stay calm told him it was probably his suits waste recyclers told him to let me take a look at it yeah there was a hole in the back of his leg probably from the acid I put a patch on it and told him not to worry about it and that's when I noticed that there were these red things growing all over his face he started screaming when the first of them burst and splattered blood all over the inside of his face plate he begged me to kill him I put my gun up to his face plate and pulled the trigger click I burned all my ammo trying to shoot those damn faces the tentacles burst out of its face a moment after it grabbed me and it started licking me Bill the thing was running its tongues all over my face and body over the suit it grabbed me and pushed me down and tried to hump my suit like a dog but it couldn't get through I managed to wrestle the thing that had once been the kid back through the sphincter into the stomach its tentacles writhed at me as it started to melt he smiled told me he loved me before he died I screamed then 835 blew its load and I flew out its ass into the ocean you know the rest of the story Bill except one thing the suit didn't make it intact it was breached no one else noticed I didn't even notice until I was in my room and changing clothes and saw the red blotches all over my skin so yeah, I guess I'm f**ked I've got the room unlocked down right now but you have to get everyone else out before I go terminal so yeah fill out the rest of the reports and the logs for me will ya be sure to edit it so the mother f**ks in command don't yell at me for being unprofessional in my AARs again I'm gonna finish off my drink and take a couple valium and go to bed don't bother trying to decontaminate the vessel just abandon the entire ship and scuttle it on top of the original site I think the kid would like it that way now we can be together just like he always wanted thanks for watching lesson complete if you missed the previous orientation go watch SCP-834 marked right now or for the complete course watch this playlist


Hello everyone, myself, M.M.A., working in computer science and engineering department as an assistant professor in Valchin Institute of Technology, Swalapur. Today, we are going to discuss the topic functional specifications with the use cases. Learning outcomes are at the end of this session, student will be able to describe functional specification with use cases and describe about the functional and non-function requirements in required analysis specification. First we are going to see what is the functional specification with use cases. Use cases specify the functionality of a system by specifying the behavior of the system captured as interactions of the users with the system. Through use cases are primarily for specifying behavior, they are also be used effectively for analysis. See, every functionality, we can define it by providing the use cases for that scenario. So generally use cases can be used for defined functionality of the subsystem or whole system. Use cases drew attention after they were used as a part of object oriented modeling proposed by Jacobson. So these use cases for the functional specification proposed by Jacobson, due to this connection with an object oriented approach, use cases are sometimes viewed as a part of object oriented approach to software development. However, they are general method for describing the interaction of the system. So how internal and external agents are interacting with the system that can be shown using the use cases. So functional requirements are, see what inputs the system should be, accept, what output the system should produce, what data the system should store that other system might use, what computations the system should perform, the timing and synchronization of the above. So these inputs, outputs, storage, computation, timing and synchronization, these are all the functional requirements. So functional requirements are product features or functions that developer must implement to enable users to accomplish their task. Generally functional requirement describes system behavior under specific conditions. For instance, a search feature allows a user to hunt among various invoices if they want to credit an issue invoice. So any function, any operation, any service that will be shown by using use cases in the functional requirements. Non-functional requirements all constraint the design meet desired quality of quality levels of usability, efficiency, reliability, maintainability and reusability. For example, response time, particularly important for processes that process a lot of data or use networks a great deal. So in client server architecture, we are always send the request from the client and server will be accepting that request and processing the input parameters of that request and the computations can be done at the server side and the result can be sent to the client from the server in the form of response. So request came from the client and response is sent from the server to the client. So requirements might stipulate less than two second response. Response time may be considered a functional requirement for some real time systems. Now we are going to see some quality non-functional requirements. Reliability, typically mean time between failure, MTBF, availability, measure the time application is up and period of downtime when down, recovery from failure, mean time to repair, critical some application, not so far others, checkpoint restarts, autosave, etc. So these are the reliability, failure-free operation, availability, availability, then a recur from failure, these are all the quality non-functional requirements. Now we are going to see what is the meaning of use cases. Use cases describe the interaction between the system and external user that leads to achieving a particular goals. Each use case includes three main elements, actor, system and goal. Actor, these are the user outside of the system that interact with the system. System, the system is described function requirement that define an intended behavior of the product. Goals, the purpose of interaction between the user and the systems are outlined as goals. This is the format of the use case. In the use case, the first overview can be defined. Then the title of the overview can be written here. That is called title of the basic flow use case. Then descriptions can be written, short description of the basic flow. Then actors and interfaces can be written, identify the actors and interfaces to components and service that participate in the use case. Initial status and preconditions, a precondition of use case in the state of system that must present priority use case being performed. Then basic flow of activities can be described in step one, step two. Then post condition can be written here. A post condition is a list of possible states. The system can be in immediately after use case has finished. Alternate flow, alternate flow described that if it is needed. So this is the thorough representation of one format of thorough representation of use case. The next is use case diagram. To model a system, the most important aspect is captured, the dynamic behavior. So use case diagram consists of actors use cases and the relationship. A single use case diagram capture a particular functionality of a system. Hence to model the entire system, a number of use case diagrams are used. Purpose of use case diagram, the purpose of use case diagram as follows. Used to gather the requirements of a system, used to get an outside view of a system, identify the external internal factors influencing the system. Show interaction among the requirements of the actors. So how the internal and external actors or agents can be interacted with the system that can be shown by using the use case diagram. Now how to draw use case diagram? Use case diagram are drawn to capture the functional requirements of a system. The name should be chosen in such a way that it can identify the functionalities performed, get a suitable name of actor, show the relationship and dependencies clearly in the diagram. So first give the name to the use case diagram, show the actor, then functionality of the system, then relationship and dependency shown clearly in the diagram. Now I'm going to ask one question to all the students. All of you pause the video and write the answer. Use case diagrams are drawn to capture the dash requirements of a system. Option A, functional, option B, non-functional, option C, static, option D, none of these. Pause the video and write the answer. The correct answer is functional. Use case diagrams are drawn to capture the functional requirements of a system. Now example of use case diagram. So this is a simple use case diagram of a hotel management system or an order management system. Here actor is the customer and order and special order to use cases. These two use cases are their extents relationship. That is the special order and the normal order. So order use case has extents, extents relationship with special order use case and normal order use case. So order, special order and normal order are three use cases and customer is the actor. So here the customer interacting with the order. Order may be extents with the special order or normal order. Then use case diagram online shopping system. Here customer will be interacting, viewing all the items. Then he will be purchasing the item. Then he will be checkout from the system. And before that, he is logging into the system. So here the authentication identity provider and the credit payment service and PayPal. These are all the administrative people, will be the actors. So customer and these administrative actors will make purchase and complete checkout and login. These are the use case diagram of online shopping system. This is the use case diagram of library system where the books can be, these are the actor and the library person is another actor. And this is the system. Here you can issue the book, return the book and you have to borrow the book. Next this is the use case diagram of research system where researcher and the supervisor actor, first you have to identify the research system, form the research question, form the research hypothesis, collect the data study, analyze the gathered data, develop the prediction model, validate the model, and conclude the results. This is the use case of attendance system where the student and teacher are the actors and check attendance, check timetable, check test score, update attendance and update score are these use cases. So student will be interacting with the checking attendance, checking timetable and checking the test score. And teacher will be updating the attendance and updating the scores. He is interacting in this way to the attendance system. These are the references. Thank you.


But in the context of the ongoing budget debates, there's obviously a lot of conversation about what the appropriate size of the military should be, what we're actually willing to spend on it, and a very fiscally driven sort of supply side, if you will, approach to military capability. And I think that's been a particular challenge for the Army, which is being cut substantially, mostly to account for the growth that occurred over the course of the last 13 years. But it looks like beyond that as well. And Army leadership has talked about how that presents some degree of risk. So I think this concept of risk is always difficult to translate in meaningful terms to the layman, the average person. How do you do that? What do you think the risk represents of an active Army at 470 or 450 or 420 or lower? And why should the American people care about that? Yeah. Okay. So obviously over the last 10 years, we've grown a bit, perhaps not as much as some people would suggest. But we're in the process right now of coming down from about a million 100,000 to, and that's across the active Army, the National Guard and the Reserve Force, to an Army of about 1,045,000. So that's a 490,000-man active force at 355 in the Guard and then the balance in the Reserve. We chose to do that without any significant, if any, resistance. We recognized that we had grown, and we didn't need to be near above well over a million as we were. We had 560,000 in the active force over the last 10 years, certainly in a latter half of the last decade. And that, so that 1,045,490 in the active force is kind of going back to where we were in the 1980s. That was a known point. We're pretty comfortable that we could respond to most challenges that might arise. We could continue to fulfill our responsibilities in terms of deterrence and engagement around the world and that sort of thing. So that was, you know, it's never easy to get rid of people, and that change has required a lot of reorganization of the Army, which is, you know, a challenge in and of itself. But that was a known point, and we were very comfortable going back there, and we knew we needed to do it not only because we couldn't justify the strength, but that, you know, the nation's got some fiscal challenges, and so we needed to contribute to that. We'll finish that reduction by 2015. Current budget trends will take us down to 980 across the total force, 980,000 soldiers across the three components, about 480,000 in the active force, by 2017. Not optimal, but we're comfortable that we can still meet our global responsibilities and not just at any given point in time. I say that because we did some very detailed analysis and looked over a 12-year period at the implications of that force, because it's not just what can you stack up at any given time. Most things that you wind up getting involved in tend to last more than a month, right? So we looked at a 12-year period. And if you look at any decade since World War II, you'll see that we do between three and five things, and not just the Army, but the Department of Defense usually winds up deploying some package of force three to five times in a significant amount and then a lot of smaller things. And then there's all of the presence around the world and that sort of thing. So we looked at being able to meet our engagement requirements as dictated by the defense strategy and the global employment of the force direction that we get. And then whether we could put forces forward, say to deter something into Persian Gulf, respond to a major theater war at some point in time, or a lesser contingency. And we did that analysis, as they say, over a 12-year period to look to see if the force could deal with all of that, and not all of it just in sequence, but in various combinations. And so there's some risk there, but it's manageable. And then we looked at going below that. And of course, if sequestration holds, we'll be at 920 and 2019. So that's 125,000 soldiers out of the Army from the number we'll be at in 2015, the 494, 125,000 soldiers leave the Army. The challenge is that will be a 25% reduction in our fighting capability, our combat power. That is not easily recoverable. So the first part of that reduction, down to 980, as I say, we think is manageable. As the Chief has said in testimony, and I think Council on Formulations as well, is that that last 60,000 across the active Guard and Reserve, about 30,000 in the active force, makes a big difference in our ability to generate the kind of capabilities necessary to meet our global responsibilities and also respond to an emerging crisis. And what's important about that, the response is important. But I think the thing that's more important is our contribution to conventional deterrence.  They can count our forces. They can see what we're capable of. They can go back and look at what we've done in the past. They're going to recognize that we're going to have less capability going forward. And what I worry about in that regard, the risk that we potentially incur is miscalculation. It's not a question of us not responding. It's a question of them thinking that we won't be able to respond and backing into a conflict rather than preventing one. Because as I think I said earlier, our first responsibility is to prevent conflict, especially where it has significant impact. We don't want war in northeast Asia, second, third, and eleventh largest economies in the world live there. We don't want war in the Persian Gulf to the extent we can prevent that, because that's the global gas station, has huge geopolitical and economic impacts for the entire globe and our economy and our way of life. So our first job is to deter. If you look at, I mentioned that Iraqi Perspectives Project, I believe in there they have a copy of a study that the Iraqi War College did on our potential invasion. Now it was not prescient, but it wasn't too far off either. So now they weren't listened to, obviously, and that was to our advantage. But my point is, our adversaries have people who study us deliberately and continuously, and I don't think we need to invite conflict by my, and that's what that risk component is. It's that step down from 980 to 920. Now, I mean, except all of that, we recognize that, and we also recognize that we have a responsibility to get the most out of the force that the government, you know, that the nation can afford. And when we think about the future, and those trends that I talked about earlier, we are looking hard at how we get more out of the force we have, because we're not willing just to create that risk and not do anything about it. We will do something about it. Because at the end of the day, we have to be engaged around the world. You know, sometimes you need some stand-on capability, not just stand-off capability. And a great example of that are the 600 paratroopers from the 173rd, you know, the four companies in Latvia, Lithuania, Estonia, and Poland. Those young captains and lieutenants and sergeants and soldiers are the, a physical manifestation of our commitment to our allies there. And they are reassuring them that the million 45,000 soldiers of the United States Army are backing them up. And I think that's usually important to maintaining stability and the health of that alliance, which has served us very well over the last, what, 60, 70 years. General Hicks, thanks so much for your time. No, thank you.


Well, hey, everyone, my name is Chris Crowe. I'm joined here by Stephen Atwell. And really, really happy to be here. Today, I'm going to be chatting a little bit about with a live demonstration, because I wasn't stressed out enough, so I figured why not add a live demo while connected to my cell phone in front of everybody, but here to talk about adding data integrity tests as part of CD pipelines. So this really came started, as I guess, a thought experiment between Stephen and I, because Stephen, in a previous company, you had a need for something like this, and I always flub it every time I try to explain it. Yeah, so at a prior company, we were a BI startup, so all of our product is reporting in analytics. And the tests that found the most critical bugs wound up being a test where we basically stood up a copy of the customer on both the old and the new version and compared all the numbers in the reports. Because if they don't match, you've got a problem, and someone's going to be unhappy about it. And over time, we wound up building out all this infrastructure that clone customer databases, stands them up, goes and does a giant comparison. And Chris and I started talking, and I started realizing how easy it had become to go and do some of this cloning of production data. And I told him about that, and then the next day, he pulls up this demo, and the rest is history. Yeah, I have too much time on my hands, much to my wife's chagrin most of the time, so. All right, yeah, and this is really an example of running data services right alongside the applications that are actually using them. So kind of a tightly coupled environment. I'm from the Seattle area, so I find a lot of times we tend to break those things apart, which has a lot of advantages, but also has some challenges. So I'm gonna kind of run through what I'm gonna show you, and I really should have updated the slide time. By the way, I think the slide deck took me longer than the actual engineering, because I'm that bad with anything that even is related to PowerPoint. So the first thing that we're gonna do as part of a deployment, and let me kind of set the stage here, because this is a CD pipeline that's hosted, so all of my configurations are hosted inside of GitHub.  Now in this case, I'm actually going to upgrade the Mongo database. When I commit that change, instead of a simple, hey, let's deploy this to the staging environment, or let's deploy this to the production environment, I'm gonna have it jump through a few hoops. And the idea of this is we really do is, I guess to kind of start a conversation about maybe a better way to be managing some of these tests. So when I do this commit, instead of simply applying it to production, we're going to start by scaling down the Mongo instance in staging and triggering a migration. Now, there's a number of ways to do this that I won't get too much into the details of, but you wanna make sure that you're getting a copy of production over to the staging environment, because that's the value that we're after here is being able to do the same sort of calculations on the database in the staging environment as we do in production. We then deploy the new manifests into staging and scale the Mongo instance back up. Now, at this point, I can trigger, and in this case, just through a GitHub action, an integrity test. And this is where I'm gonna ask everybody to use a little bit of their imagination, because the application I'm using is just a little fake barbecue ordering app that has a backend for a Mongo database. And so, of course, the integration tests that I'm running are specific to that app. I'm making sure that the orders actually make sense, that I can connect to the database, that the users are all working, things like that. If it fails, then I'm gonna stop the process there, but if it passes, then I can move this on into deploying into production. For this slide deck, I'm assuming it passes. Then I'm going to deploy the new manifests into production, and then I'm going to run a canary deployment where I am going to make sure I check Prometheus metrics as we're scaling this traffic just to make sure everything is fine. And actually, Stephen had a great idea with this one, because we're monitoring the warnings that Mongo is throwing out there to see if they exceed what we would consider a threshold. It doesn't really matter what they are, but hey, if our installation starts throwing warnings, then maybe it would be a good idea to roll this back. So, high level, we've put both the application and the database in the same CICD pipeline, and we're testing and staging using a copy of the production database to make sure that our data-specific tests are all working before we deploy the new version to prod, and then we're doing canary deployments in production. All right, so people know there's no tricks up my sleeve. I'm just going to go ahead and do a quick order here. Guess who doesn't like cornbread and fried pickles? Maybe? I don't know. I still want to know what the pork special is. I have been asking that question. I need to track down the guy that actually wrote this little demo app. So, I have something that's now persistent in the database. I'm going to go ahead and upgrade Mongo from 6.0.1 to 6.0.2. This is where I always like the dead air of live demos. Because by the way, I can't really talk and do something at the same time. I'm going to go ahead and upgrade this to 6.0.2, commit the changes. I'm going to go ahead and put this into a new branch, create my pull request. And once he merges that, we're going to go ahead and basically kick off a quick build, grab the new Docker images, and we're going to kick off that database migration and deploy it all to staging. See if this new version of 6.0.2 works as well as we think it does. And I'll unpack the back end after we've gone through this. Do we have Jeopardy music in the sound board in the back? No? We need a few. There we go. Okay, so new deployment starts. It's going to start by actually, and spoiling a lot of this for you. There's a lot of webhooks. There's a little open source utility that we're talking to that's doing a lot of the gating, right? Or actually running these commands. So it's what scaled down staging, the Mongo instance. It's what started the migration by, you can imagine running some kubectl commands. And it's what is waiting for this migration to actually finish that we can see here before it moves on to deploying the new version of these manifests into the staging environment. So yeah, the open source tool is called CMD hook. And it basically is just a wrapper for running arbitrary command lines via webhook inside your cluster. So the migration is literally going and pushing all our production data from prod into staging.  This started actually running in my basement at one point and I was still using that. I figured for here I would actually put it inside a proper cloud vendor and stuff so it should be a little quicker. But the SLA on my garage is not as good as I would like it to be. And for comparison, like five years ago, just doing this step was like six months of engineering for the first time I needed to do it. There we go. So that one's finished. We actually started the deployment staging. So this is where we're actually deploying that new version of Mongo and it's going to kick off that integration test by way of a GitHub action, which we'll see it running here in just a moment. So what are we testing with this new test that we're running, Chris? Actually, or? So yeah, we've gone back and forth about some of the integration tests in this one. So originally I had a little Flask app that was connecting into the Mongo database to do exactly that where I'm checking the amount of orders and everything else. And then I would hilariously have it randomly fail. And I'll tell you one thing. You don't want random failures induced in live demos. So I'm actually looking at the Mongo version on the back end and failing it at a particular point for demonstration purposes, which you can just see happened. So because this failed, we're actually stopping this deployment here as you would expect. Now, of course, this entire thing is running inside of staging. And because it was an artificial failure, it really is working. Oh, right, I have to, I've gone through so many different accounts because I keep forgetting the passwords for them. So now we're on to Stephen's various ones. And there we go. So I have a copy of my production data that's actually in the staging environment. So if something was actually wrong, I could spend some time looking at what was happening. Now, I came from an infrastructure background, so I'm gonna go ahead and do what infrastructure folks do best and plow ahead to 6.0.3. Is there any ex-infrastructure folks in the room before I shouldn't have? Yeah, see, I gotta, I really need to change the order of my jokes here. Okay. It's okay, most infrastructure folks have a sense of security. Okay, all right. All right, so let's go ahead and upgrade this to 6.0.3. All right, we'll go ahead and merge it. And we'll notice back here, by the way, that since we failed this step, that we are not going to keep going. I'll wait for that next one to kick off. Now, I'm once again, taking another production copy of data. Now, one of the most, I guess I'll shortcut that since we have a moment, one of the common questions that I'll get here is around data anonymization. And generally your best bet is to do that on the source side. So using maybe a snapshot convention with your CSI driver or however that works. But because oftentimes we'll find that staging may not be in the same zone, security zone as production. So keep that in mind. But your best bet is to actually do those transforms on the source side of things. I'm gonna work on integrating that. My last name is Crowe. So I think the standard joke is replace it with Raven or something. Yeah, one of these days, we are planning to write the anonymization layer that replaces all occurrences of Crowe with Raven. Because why not? The other option that some folks use is basically just run all of this in a production-like environment. If your staging environment meets the same security requirements as your prod, then you can usually get away with that. But a lot of the time, staging doesn't meet like all your SOX controls, so. Yeah. Do be aware of that. Did that go? All right. Oh, this is especially speedy today. And with any luck, we'll pass this time. About every fifth time I run this for the internet gods decide that I'm not going to be able to pull down the Mongo image as fast as I would like to, and then we'll be tap dancing up here for a few minutes. So hopefully, I didn't jinx us. Now, something that's important about this process, because through this entire process, I upgraded to 6.0.2, what version of Mongo is production still running? Well, 6.0.1, it hasn't passed any of the integration tests. Now that it has succeeded, we are finally going to get to deploying into production. And by the way, as a quick aside, using the same system of DR, maybe backup restores to seed this, I think is a pretty good strategy, because the more practice we can get with ensuring that our important data is easily restored, if it's already part of the system like this, then hey, the best DR strategy is one that we're testing constantly, right? Running through our canary analysis, this is just Prometheus checks on the backend. I believe we're actually checking CPU usage and Prometheus. So we're checking Prometheus to, oh, sorry. Oh, you're right. Actually, they're both Prometheus. They're both Prometheus, yes. We're checking Mongo for logging any errors, and then we're checking CPU usage as well. Make sure both of those are as expected. And since it went in fairly quickly here, I put a little approve and continue just in case I didn't make it to the screen in time. This is just a manual step that I added as part of this deployment process. And obviously, if any of those metrics had not been kind of in the realm we were expecting them to be, the system would have detected it. We would have automatically rolled back and been back on 6.0.1, and thus stable in production. Like that one, it looks like we had a check that may have failed. But too late now, it's in production. The other reason, I love live demos. All right, so what's happening under the covers? Let's take a quick look at some of those webhooks that are happening here. So from a deployment logic perspective, what we're actually doing here is we have three deployment targets. And so the way to kind of read this as a YAML file is by looking at this depends on statement. So staging depends on the migrate broad DB to staging actually worked and production depends on staging properly deploying. You'll also notice the use of webhooks in here. And this is what I'm gonna move down to because this is the actual things that we are deploying. But these webhooks down here, what's doing the real work? For instance, when we're waiting for the database migration to actually happen, we're waiting for this migration option to have a final state on it. And once it does, calling back into our CD tool to say, okay, you can keep moving. Or when we're kicking off, if I can find it in here, I really should have reordered some of this stuff. There we go, our integration tests. So in the case of our integration tests where we're kicking that back out to GitHub to actually to run a GitHub action that's doing those checks that I mentioned before. And so this is really the piece that's doing a lot of those gatings. That ends up being a little bit of a long file because we have our Prometheus checks at the end. So that's really everything we have for this one. And really our hope with a lot of this is to kind of spark that conversation is what more can we do if we start putting data on Kubernetes to start treating our data services in the same way we would, the applications that we're constantly testing and deploying without having to send this through a different loop as part of a database upgrade where we're having to do either manual things or additional things or just all sorts of stuff that is gonna ultimately end up being a little more delicate. And I'm a big fan in a lot of the applications that I'm working with of having those things tightly coupled because you can imagine this application, data services are running just within the same namespace so it can be nice and portable so I can get away with doing this stuff. This is not going to be appropriate for every application but our hope was to kind of have a bit of an idea. So our next bit is to try to do something like a blue-green deployment that also involves data services that I think would be a lot of fun to figure out on how to get those to cut over properly. So I guess with that, and we're even ahead of schedule, is there any questions, comments, death threats, tomatoes? We did confiscate the tomatoes, right? Okay. I hope so. Last time that was a little messy. No one's reading, no one's reaching for anything. Hi, thank you. So what's the size of this database? So for example, I have an application that the size is gigabytes and gigabytes and it's the ruin, right? So I don't know how for every change I make, I'm gonna be replicating the data. So yeah, and that's the other common question that I get because in this case, the database is tiny. It's really tiny. So I can take a complete copy of it every time. So generally what you're gonna wanna do, and this I would definitely think of it in kind of the same way that you're doing a DR setup but the answer's gonna be something like incremental replication or some sort of incremental change. So constantly have the production version of your data syncing with the staging version and it should be able to also sync to any other DR location and then when you run these integration tests, as it actually be a good thing to add, I've experimented with doing it but what you actually end up doing is you break that replication temporarily while you're running the integration test so it can happen immediately instead of having to wait for this migration to happen because if we put too long of a tail just in time as part of the CD pipeline, then it's not gonna be helpful. So break it at that point and then the other important thing you're gonna need is some way that that resynchronizes so you're not having to send the complete terabyte database over the wire again to propagate your staging environment. So the two things I'd look for being able to break and promote the replica side and then being able to replay any changes that have happened while the integration test happens. So a couple of things I'll add there. So the company that inspired this, we had terabyte databases and the way we dealt with it is everything here was doing full CD triggered from a Git commit. If you've got terabyte databases, you're not gonna wanna do this off every commit. So at that point, I would recommend taking a few of your smaller databases setting up a nightly job and then hey, before you go and you do like a larger release process, you can use a set of databases and make sure that they are all looking good. As you start getting into needing database tests, when your databases are terabytes, you're probably gonna be looking at a slower deployment cycle as well. And there are tools like that for handling slower running tests. If you need to use data in your tests, in your test suites, and you've got relatively small databases, you can do this after every convention, have it still be reasonably fast. Yeah, no problem. Any other questions? So you guys mentioned a little bit about like synthetic data. So a lot of tools like Tonic and stuff, they'll be able to like, if you have like say terabytes of data, only use 10% of that data, right? So you guys talking about like having these massive data is just bring it down. And then on top of that, talking about like database startup time, you can also cache the startup of the database as well, do like a nightly job. So you have the tech that when you don't really need it and then when you're actually deploying it, it's like super quick. Yeah, yeah. So on that, I think trimming data down can depending on the application be a lot harder than it sometimes sounds. Basically the instant you have different tables that need to join together, if you're shrinking both of them, you have to be sure that all the joins are still working properly. We experimented with that at my last company and it was too, there was too much custom logic in there for us to get away with it. Yeah, fair. Like we could have that issue as well. Once a month it would break because the data sets, the links, everything would break. Yeah. Well, and you know, depending on the schema, if you can get away with it, I agree it's a great way to make it faster. It probably would have broken this test because one of the things I'm checking is that the amount of orders is the same before and afterwards with that Flask app. And if I start trimming those, then I will actually trigger the integration test as an issue because, well, I've noticed a problem here. It's not within a tolerance. So, but like I mentioned, the integrity tests that you're running are very specific to what you're trying to accomplish. Right, it's not, and that's why I tend to not show something up here because it's not a one-size-fits-all. It's very, yeah, very specific, so. Any other questions? All right, well, I will be, well, actually I'm not around this week because hilariously I booked a vacation right over the top of KubeCon when I wasn't sure this would actually be accepted. So I'm flying out tomorrow morning, but Steven will be here for the entire KubeCon and can answer any questions. So, and I figured I'd start earlier with the Hawaiian shirt, so. Yeah, if you think of a question later on, come find me, I'll be at the Armory booth. And on the data side, we've got his whole company is here and they're happy to answer questions on data. All right, thanks, folks.